记录编号 38406 评测结果 AAAAAAAAAA
题目名称 [USACO Open09] 捉迷藏 最终得分 100
用户昵称 GravatarCloud 是否通过 通过
代码语言 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;
}