比赛 |
20120418s |
评测结果 |
AWWWWWWWWW |
题目名称 |
捉迷藏 |
最终得分 |
10 |
用户昵称 |
QhelDIV |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2012-04-18 08:57:28 |
显示代码纯文本
#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=u;
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;head++)
{
for(p=Map[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;
}
}
for(i=1;i<=V;i++)
{
if(Max<MC[i])
{
Fi=i;
Max=MC[i];
Tot=1;
}
else
if(Max==MC[i])
Tot++;
else
Tot=0;
}
fout<<Fi<<" "<<Max<<" "<<Tot<<endl;
}
int main()
{
Initialize();
Spfa();
fin.close();
fout.close();
return 0;
}