您的位置:首页 > 其它

HDOJ 1869 六度分离(floyd最短路~)

2017-08-05 15:05 429 查看
这是用floyd做的,我看到还有用spfa的做法,可是我懒TAT。。。

虽然AC了,可是时间真的贼长。。。。唉,所幸是写起来无压力!#include <cstdio>// Floyd算法,在不超时的情况下更简洁方便
#include <cstring>
using namespace std;
#define MAXN 1010
#define INF 0x3f3f3f3f
int map[MAXN][MAXN];
int n, m, x, y;

int main(void) {
while (~scanf("%d%d", &n, &m)) {
bool flag = true;
memset(map, INF, sizeof(map));
for (int i = 0; i < n; i++)
map[i][i] = 0;
for (int i = 0; i < m; i++) {
scanf("%d%d", &x, &y);
map[x][y] = map[y][x] = 1;
}

for (int k = 0; k < n; k++) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (map[i][j] > map[i][k] + map[k][j])
map[i][j] = map[i][k] + map[k][j];
}
}
}

for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
if (map[i][j] > 7) {
flag = false;
}
}

if (flag)
printf("Yes\n");
else
printf("No\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: