#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
using namespace std;
string source,destination;
int root[1000001],t,s;
map<int,string>you;
void finding_path(int node)
{
if(you[root[node]]!=you[s])
{
finding_path(root[node]);
cout<<you[root[node]]<<" "<<you[node]<<endl;
}
else
cout<<you[root[node]]<<" "<<you[node]<<endl;
}
int main()
{
//freopen("c:\\temp\\in.txt","r",stdin);
int links;
int p=0;
while(scanf("%d",&links)==1)
{
if(p!=0)cout<<endl;p++;
map<string,int>my;
string u,v;
vector<int>graph[110000];
int j=1;
for(int i=1;i<=links;i++)
{
cin>>u>>v;
if(my[u]==0)
{
my[u]=j;you[j]=u;j++;
}
if(my[v]==0)
{
my[v]=j;
you[j]=v;j++;
}
graph[my[u]].push_back(my[v]);
graph[my[v]].push_back(my[u]);
}
cin>>source>>destination;
//cout<<links<<" "<<source<<" "<<destination<<endl;
queue<int>q;
q.push(my[source]);
t=my[destination];
int visit[100001];memset(visit,0,sizeof visit);
visit[my[source]]=1;s=my[source];
int check=0;
root[t]=0;
int pop;
while(!q.empty())
{
pop=q.front();q.pop();
if(pop==t)
{
check=1;break;
}
for(int i=0;i<graph[pop].size();i++)
{
int v=graph[pop][i];
if(visit[v]==0)
{
root[v]=pop;
q.push(v);visit[v]=1;
}
}
}
if(check==0 || root[t]==0)
{
printf("No route\n");
}
else
{
if(source!=destination)
finding_path(my[destination]);
}
}
return 0;
}
বৃহস্পতিবার, ২ জানুয়ারী, ২০১৪
Solution code of uva 762-we ship cheap
Labels:
uva solution
এতে সদস্যতা:
মন্তব্যগুলি পোস্ট করুন (Atom)
0 comments:
একটি মন্তব্য পোস্ট করুন