Saturday, July 25, 2015

Find Itinerary from a given list of tickets

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
struct hashmap
{
bool visit;
string str[2];
};
int find(hashmap h[],string s,int size)
{
for(int i=0;i<size;i++)
{
if(!(h[i].str[0].compare(s)))
return i;
}
return -1;
}
int main()
{
hashmap tofrom[20], fromto[20];
ifstream fin;
for(int i=0;i<20;i++)
{
fromto[i].visit=false;
}
fin.open("/home/pawan/Desktop/place.txt");
if(!fin.is_open())
cout<<"not opened\n";
int i=0;
while(!fin.eof())
{

string str;
fin>>str;
tofrom[i].str[1]=str;
fromto[i].str[0]=str;
fin>>str;
fromto[i].str[1]=str;
tofrom[i].str[0]=str;
i++;
}
int n=i,index;
for(i=0;i<n;i++)
{
int flag=0;
for(int j=0;j<n;j++)
{
if(!(fromto[i].str[0].compare(tofrom[j].str[0])))
flag=1;
}
if(flag==0)
{
index=i;
break;
}
}
std::vector<string> v;

v.push_back(fromto[index].str[0]);
while(!fromto[index].visit)
{

v.push_back(fromto[index].str[1]);
fromto[index].visit=true;
index=find(fromto,fromto[index].str[1],n);
//cout<<index<<" ";

}
for(i=0;i<v.size();i++)
{
cout<<v[i]<<"->";
}
return 0;
}

No comments:

Post a Comment

Contributors

Translate