算法1
拉紧距离就是最短距离。
C++ 代码
#include <bits/stdc++.h>
#define For(i, a, b) for(register int i = (a); i <= (b); ++i)
#define Rof(i, a, b) for(register int i = (a); i >= (b); --i)
#define INF 0x3f3f3f3f
#define LL long long
#define MaxN 210
using namespace std;
int N, M, Map[MaxN][MaxN], u, v, Ans;
int main() {
memset(Map, INF, sizeof(Map));
scanf("%d%d", &N, &M);
For(i, 1, M) scanf("%d%d", &u, &v), Map[u][v] = Map[v][u] = 1;
For(k, 1, N) For(i, 1, N) For(j, 1, N) Map[i][j] = min(Map[i][j], Map[i][k] + Map[k][j]);
For(i, 1, N) For(j, i + 1, N) if(Map[i][j] < INF) Ans = max(Ans, Map[i][j]);
printf("%d\n", Ans);
return 0;
}
你好,For(i, 1, N)是什么意思呢
上面定义宏了。