pastebin - collaborative debugging tool
kpaste.net RSS


Untitled
Posted by Anonymous on Tue 14th Apr 2015 13:46
raw | new post

  1. // Sudhir Krishnakumar - IT 2nd Year
  2. #include<iostream>
  3. #include<vector>
  4. #include<set>
  5. #include<map>
  6.  
  7.  
  8. using namespace std;
  9.  
  10.  
  11. #define FOR(i,a,b) for(int i=(a);i<(b);i++)
  12. #define SZ(x) ((int)(x).size())
  13. #define FORV(i,x) FOR(i,0,SZ(x))
  14. #define F first
  15. #define S second
  16.  
  17.  
  18. map<string,string> m,ans,rep;
  19. vector< pair<string,string> > v;
  20. set<string> found;
  21.  
  22. int main()
  23. {
  24.         string lhs,rhs;
  25.         int n;
  26.         cin >> n;
  27.         FOR(i,0,n)
  28.         {        
  29.                 cin >> lhs >> rhs;
  30.                 v.push_back(make_pair(lhs,rhs));
  31.     }
  32.     FORV(i,v)
  33.         {
  34.                 string lhs=v[i].F,rhs=v[i].S,temp1,temp2;
  35.                 int k;
  36.                 for(k=0;rhs[k]!='+';k++) temp1+=rhs[k];
  37.                 for(k++;k<SZ(rhs);k++) temp2+=rhs[k];
  38.                 for( map<string,string> :: iterator it=rep.begin() ; it!=rep.end() ; it++ )
  39.                 {
  40.                         if(temp1==it->F) temp1=rep[it->F];
  41.                         if(temp2==it->F) temp2=rep[it->F];
  42.                 }
  43.                 string str=temp1;
  44.                 str+="+";
  45.                 str+=temp2;
  46.                 rhs=v[i].S=str;
  47.                 if(m.find(rhs)==m.end())
  48.                 {
  49.                         m[rhs]=lhs;
  50.                         found.insert(lhs);
  51.                 }
  52.                 else
  53.                 {
  54.                         string r=m[rhs];
  55.                         int k;
  56.                         if(!(found.find(temp1)!=found.end() || found.find(temp2)!=found.end()))
  57.                         {
  58.                                 bool f=0;
  59.                                 FOR(x,0,i) if(v[x].S==rhs)
  60.                                 {
  61.                                         rep[v[i].F]=v[x].F;
  62.                                         v[i].F=v[x].F;
  63.                                         found.insert(v[x].F);
  64.                                         f=1;
  65.                                         break;                         
  66.                                 }      
  67.                                 if(!f) found.insert(v[i].F);                           
  68.                         }      
  69.                 }
  70.         }
  71.         FORV(i,v) ans[v[i].F]=v[i].S;
  72.         for( map<string,string> :: iterator it=ans.begin() ; it!=ans.end() ; it++ )
  73.         {
  74.                 cout << (it->F) << "=" << (it->S) << endl;
  75.         }      
  76.         return 0;
  77. }

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at