记录编号 |
38406 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Open09] 捉迷藏 |
最终得分 |
100 |
用户昵称 |
Cloud |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.124 s |
提交时间 |
2012-04-18 16:20:14 |
内存使用 |
0.51 MiB |
显示代码纯文本
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
vector<int> map[20001];
queue<int> dq;
int main(void)
{
ifstream fin("hideseek.in");
ofstream fout("hideseek.out");
int n,m;
int dist[20001];
bool f[20001]={0};
fin>>n>>m;
int i,j,k;
for(i=0;i<m;i++)
{
fin>>j>>k;
map[j].push_back(k);
map[k].push_back(j);
}
for(int i=1;i<=n;i++)
dist[i]=999999;
dist[1]=0;
f[1]=1;
dq.push(1);
int num=0,max=-1;
while(!dq.empty())
{
i=dq.front();
dq.pop();
for(j=0;j<map[i].size();j++)
{
num=dist[i]+1;
if(num<dist[map[i][j]])
{
dist[map[i][j]]=num;
if(dist[map[i][j]]>max)
max=dist[map[i][j]];
if(!f[map[i][j]])
{
dq.push(map[i][j]);
f[map[i][j]]=1;
}
}
}
}
num=0;
bool flag=1;
for(i=1;i<=n;i++)
if(max==dist[i])
{
if(flag)j=i;
num++;
flag=0;
}
fout<<j<<" "<<max<<" "<<num;
fin.close();
fout.close();
return 0;
}