六度分离
题解
本质上是做题,所以观察题目数据,很小,直接暴力遍历所有点走单源最短路
code
#include<bits/stdc++.h>
using namespace std;
struct node
{
int x,val;
bool operator<(const node&b) const{return b.val>val;}
};
int main()
{
int n,m;
while(cin>>n>>m)
{
vector<int> G[105];
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
int flag=1;
for(int i=0;i<n;i++)
{
int dis[105];
for(int i=0;i<n;i++) dis[i]=2e9;
queue<node> q;
q.push({i,0});
while(q.size())
{
int now=q.front().x,val=q.front().val;
q.pop();
if(val>dis[now]) continue;
dis[now]=val;
for(auto next:G[now])
{
if(dis[next]>dis[now]+1) q.push({next,dis[now]+1});
}
}
for(int i=0;i<n;i++) if(dis[i]>7) flag=0;
if(!flag) break;
}
if(flag) puts("Yes");
else puts("No");
}
return 0;
}

浙公网安备 33010602011771号