bzoj 3402: [Usaco2009 Open]Hide and Seek 捉迷藏

来源:互联网 发布:七秀脸型数据 编辑:程序博客网 时间:2024/05/18 01:43

→题目链接←


跑一遍SPFA然后就完事了


代码:

#include<iostream>#include<cstdio>#include<algorithm>#include<set>#include<vector>#include<queue>#define inf 233333333using namespace std;int n,m;vector<int>v[20020];bool vis[20020];int dis[20020];void spfa(int s){for(int i=1; i<=n; i++)dis[i]=inf,vis[i]=0;queue<int>q;q.push(s);dis[s]=0;vis[s]=true;while(!q.empty()){int t=q.front();q.pop();for(int i=0; i<v[t].size(); i++){int to=v[t][i];if(dis[to]>dis[t]+1){dis[to]=dis[t]+1;if(!vis[to])q.push(to),vis[to]=true;}}vis[t]=false;}}int main(){scanf("%d%d",&n,&m);for(int i=0; i<m; i++){int x,y;scanf("%d%d",&x,&y);v[x].push_back(y);v[y].push_back(x);}spfa(1);int Max=-1,ans=0,sum=0;for(int i=1; i<=n; i++){if(dis[i]>Max){Max=dis[i];ans=i;sum=1;}else if(dis[i]==Max)sum++;}printf("%d %d %d\n",ans,Max,sum);return 0;}