您的位置:首页 > 其它

HDU 1869 六度分离

2016-01-18 18:06 363 查看
数据范围小,可以求最短路

#include <cstdio>
#include <algorithm>
using namespace std;
const int INF = 1e9;

int dis[105][105];

int main()
{
int n, m;

while(~scanf("%d%d", &n, &m))
{
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
dis[i][j] = INF;
for(int i = 0; i < m; i++)
{
int a, b;
scanf("%d%d", &a, &b);
dis[a][b] = dis[b][a] = 1;
}

for(int k = 0; k < n; k++)
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);

bool ok = true;

for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(dis[i][j] > 7) ok = false;

printf("%s\n", ok ? "Yes" : "No");
}

return 0;
}
另一种快一点的方法是求树中的最长路

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