ural 1837 Isenbaev's Number

时间:2023-03-09 14:36:42
ural 1837 Isenbaev's Number

http://acm.timus.ru/problem.aspx?space=1&num=1837

 #include <cstdio>
#include <cstring>
#include <vector>
#include <string>
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
vector<int>q[]; struct node
{
string s;
int num;
bool operator <(const node &a)const
{
return s<a.s;
}
} p1[*];
int t1; int getnum(string c)
{
for(int i=; i<t1; i++)
{
if(c==p1[i].s) return i;
}
p1[t1++].s=c;
return t1-;
} void bfs(int str)
{
queue<int>qq;
bool vis[];
memset(vis,false,sizeof(vis));
qq.push(str);
p1[str].num=;
vis[str]=true;
while(!qq.empty())
{
int m=qq.front();
qq.pop();
for(int j=; j<q[m].size(); j++)
{
int x=q[m][j];
vis[x]=true;
if(p1[x].num==-){
p1[x].num=p1[m].num+;
qq.push(x);
}
}
}
} int main()
{
int t;
scanf("%d",&t);
string s1,s2,s3;
t1=;
int k1,k2,k3;
for(int i=; i<=t; i++)
{
cin>>s1>>s2>>s3;
k1=getnum(s1);
k2=getnum(s2);
k3=getnum(s3);
q[k1].push_back(k2);
q[k1].push_back(k3);
q[k2].push_back(k1);
q[k2].push_back(k3);
q[k3].push_back(k1);
q[k3].push_back(k2);
}
for(int j=; j<t1; j++)
{
p1[j].num=-;
}
string s4="Isenbaev";
int num1;
bool flag=false;
for(int j=; j<t1; j++)
{
if(p1[j].s==s4)
{
flag=true;
num1=j;
break;
}
}
if(flag)
bfs(num1);
sort(p1,p1+t1);
for(int i=; i<t1; i++)
{
if(p1[i].num==-)
{
cout<<p1[i].s<<" "<<"undefined"<<endl;
}
else
cout<<p1[i].s<<" "<<p1[i].num<<endl;
}
return ;
}