POJ 1391 Erdos Numbers G++ bfs
程序员文章站
2022-03-23 17:33:13
...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <map>
#include <queue>
using namespace std;
//英语 看博友分析 抄博友程序 bfs
map<string,int> mp;
vector<int> g[10000];
int dis[10000];
int main()
{
int tag=0;
while(1)
{
tag++;
int n,m;
cin>>n>>m;
if(n==0 && m==0)
{
break;
}
cout<<"Database #"<<tag<<endl;
for(int i=0;i<10000;i++)
{
g[i].clear();
}
mp.clear();
memset(dis,-1,sizeof(dis));
int js=1;
mp["Erdos,P."]=js++;
//cout<<"Erdos,P."<<"* "<<mp["Erdos,P."]<<endl;
while(n--)
{
vector<int> ve;
ve.clear();
while(1)
{
string a,b;
char str[100];
//cin>>a;
//cin>>b;
scanf("%s",str);
a=str;
scanf("%s",str);
b=str;
int l=b.size();
int flag=0;
if(b[l-1]==':'||b[l-1]=='.')//抄博友程序
{
flag=1;
}
//b[l-1]='\0';
b.erase(b.begin()+l-1);
//cout<<b<<"*"<<endl;
string s=a+b;
//cout<<s<<"* ";
if(mp[s]==0)
{
mp[s]=js++;
}
//cout<<mp[s]<<endl;
ve.push_back(mp[s]);
if(flag==1)
{
//cout<<"hi"<<endl;
//for(int i=0;i<ve.size();i++)
//{
// cout<<ve[i]<<" ";
//}
//cout<<endl;
char t[1000];
gets(t);
for(int i=0;i<ve.size();i++)
{
for(int j=0;j<ve.size();j++)
{
if(i!=j)
{
//cout<<ve[i]<<" "<<ve[j]<<endl;
g[ve[i]].push_back(ve[j]);
g[ve[j]].push_back(ve[i]);
}
}
}
break;
}
}
}
queue<int> que;
que.push(1);
dis[1]=0;
while(que.empty()!=1)
{
int u=que.front();
que.pop();
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i];
if(dis[v]==-1)
{
dis[v]=dis[u]+1;
que.push(v);
}
}
}
while(m--)
{
char str[100];
string a,b;
//cin>>a>>b;
scanf("%s",str);
a=str;
scanf("%s",str);
b=str;
cout<<a<<" "<<b<<": ";
int l=b.size();
//b[l-1]=0;
//b.erase(b.begin()+l-1);
string s=a+b;
//cout<<s<<"* "<<mp[s]<<endl;
if(dis[mp[s]]==-1)
{
cout<<"infinity"<<endl;
}else
{
cout<<dis[mp[s]]<<endl;
}
}
cout<<endl;//抄博友程序
}
return 0;
}
推荐阅读
-
POJ 1708 Game G++ 巧妙 bfs 没掌握
-
POJ 1465 Multiple G++ bfs 没掌握
-
POJ 1544 A Puzzling Problem G++ bfs 背
-
POJ 1545 Galactic Import G++ bfs
-
POJ 1790 Base Numbers G++ dp 没掌握
-
POJ 1391 Erdos Numbers G++ bfs
-
POJ 1338 Ugly Numbers G++
-
POJ 2769 Reduced ID Numbers G++ memset用法
-
POJ 1316 Self Numbers G++
-
POJ 2247 Humble Numbers G++