记录编号 38383 评测结果 AAAAAAAAAA
题目名称 [USACO Open09] 捉迷藏 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.107 s
提交时间 2012-04-18 11:56:15 内存使用 0.72 MiB
显示代码纯文本
#include <fstream>
using namespace std;
ifstream fin("hideseek.in");
ofstream fout("hideseek.out");
int V,E,Q[20002],MC[20002],Max;
class Node
{
public:
	int Data,Name;
	Node *Xt;
}Map[20002],*last[20002];

void Add(int u,int v,int w)
{
	last[u]->Xt=new Node;
	last[u]=last[u]->Xt;
	last[u]->Name=v;
	last[u]->Data=w;
	last[u]->Xt=0;
}

void Initialize()
{
int i,St,En;
	fin>>V>>E;
	for(i=1;i<=V;i++)
	{
		last[i]=&Map[i];
		MC[i]=100000000;
	}
	for(i=1;i<=E;i++)
	{
		fin>>St>>En;
		Add(St,En,1);
		Add(En,St,1);
	}
}

void Spfa()
{
int i,head=1,tail=1,Tot=0,Fi;Node *p;
	Q[tail++]=1;MC[1]=0;
	for(;head<tail;)
	{
		for(p=Map[Q[head]].Xt;p;p=p->Xt)
			if(MC[p->Name]>MC[Q[head]]+1)
			{
				MC[p->Name]=MC[Q[head]]+1;
				Q[tail++]=p->Name;
			}
		head++;
	}
	for(i=1;i<=V;i++)
	{
		if(Max<MC[i])
		{
			Fi=i;
			Max=MC[i];
			Tot=1;
		}
		else
			if(Max==MC[i])
				Tot++;
	}
	fout<<Fi<<" "<<Max<<" "<<Tot<<endl;
}

int main()
{
	Initialize();
	
	Spfa();
	
	fin.close();
	fout.close();
	return 0;
}