Tuesday, May 29, 2018

UVA -762 .cpp file

#include<bits/stdc++.h>
using namespace std;

map<string,string>parent;
map<string,int>visited;

bool bfs(string src,string des,map< string,vector<string> >Graph)
{
    queue<string>Q;
    Q.push(src);
    visited[src]=0;
    while(!Q.empty())
    {
        string u=Q.front();
        if(u==des) return true;
        for(int i=0; i<Graph[u].size(); i++)
        {
            string v=Graph[u][i];
            if(!visited[v])
            {
                parent[v]=u;
                visited[v]=1;
                Q.push(v);
            }
        }
        Q.pop();
    }
    return false;
}

void printPath(string a,string b)
{
    if(a==b) return;
    printPath(parent[a],b);
    cout<<parent[a]<<" "<<a<<endl;
}


int main()
{
    //freopen("Input.txt","r",stdin);
    //freopen("Output.txt","w",stdout);
    int t,cnt=0;
    while(cin>>t)
    {
        map< string,vector<string> >Graph;
        if(cnt) cout<<endl;
        while(t--)
        {
            string a;
            string b;
            cin>>a>>b;
            Graph[a].push_back(b);
            Graph[b].push_back(a);
            visited[a]=0;
            visited[b]=0;
        }
        string src,des;
        cin>>src>>des;
        if(bfs(src,des,Graph)) printPath(des,src);
        else cout<<"No route"<<endl;
        cnt++;
    }
    return 0;
}

No comments:

Post a Comment