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

来源:互联网 发布:小鲜肉演技知乎 编辑:程序博客网 时间:2024/05/29 18:50

这是用floyd做的,我看到还有用spfa的做法,可是我懒TAT。。。

虽然AC了,可是时间真的贼长。。。。唉,所幸是写起来无压力!

#include <cstdio>// Floyd算法,在不超时的情况下更简洁方便#include <cstring>using namespace std;#define MAXN 1010#define INF 0x3f3f3f3fint 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;}

原创粉丝点击