Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include<iostream>
- #include<math.h>
- #include<vector>
- #include<set>
- #include<queue>
- #include<algorithm>
- #include<cstring> //for memset
- using namespace std;
- #define lli int long long
- #define ull unsigned long long
- #define ld long double
- #define pi acos(-1)
- #define pb push_back
- #define pbk pop_back
- #define mp make_pair
- #define ff first
- #define ss second
- #define pii pair<int,int>
- #define gcd(a,b) __gcd(a,b)
- #define lcm(a,b) (a/gcd(a,b))*b
- #define READ freopen("in.txt","r",stdin);
- #define WRITE freopen("outer.txt","w",stdout);
- //#define sort(t) sort(t.begin(),t.end())
- #define mem(a,b) memset(a,b,sizeof a)
- #define sf scanf
- #define pf printf
- #define cs(p) printf("Case %d: ", ++(p))
- #define dist(ax,ay,bx,by) sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by))
- #define MM 100003
- #define inf 10000000000000000+7
- #define M 1000000002
- #define MINI -1000000003
- //const int fx[]={+1,-1,+0,+0};
- //const int fy[]={+0,+0,+1,-1};
- //const int fx[]={+0,+0,+1,-1,-1,+1,-1,+1}; // Kings Move
- //const int fy[]={-1,+1,+0,+0,+1,+1,-1,-1}; // Kings Move
- //#define for(i,a,n) for(int i=a;i<n;i++)
- //it=myset.find(20);
- //int a[8]= {0,0,-1,1,-1,1,-1,1};
- //int b[8]= {-1,1,0,0,-1,1,1 ,-1};
- vector<int>v[105];
- int A[105],B[105];
- bool vis[105];
- int un=0,f=0;
- map<int,int>mm;
- int bfs(int s)
- {
- vis[s]=1;
- queue<int>q;
- q.push(s);
- while(!q.empty())
- {
- int uu=q.front();
- q.pop();
- un=uu;
- for(int i=0;i<v[uu].size();i++)
- {
- int rr=v[uu][i];
- if(vis[rr]==0)
- {
- vis[rr]=1;
- q.push(rr);
- }
- }
- }
- return un;
- }
- void bfs_print(int s)
- {
- vis[s]=1;
- queue<int>q;
- q.push(s);
- while(!q.empty())
- {
- int uu=q.front();
- q.pop();
- for(int i=0;i<v[uu].size();i++)
- {
- int rr=v[uu][i];
- if(vis[rr]==0)
- {
- if(mm[uu]==1)
- {
- A[f]=uu;
- B[f]=uu;
- f++;
- A[f]=uu;
- B[f]=rr;
- f++;
- //cout<<uu<<" "<<uu<<endl;
- //cout<<uu<<" "<<rr<<endl;
- }
- else if(mm[rr]==1)
- {//cout<<uu<<" "<<rr<<endl;
- //cout<<rr<<" "<<rr<<endl;
- A[f]=uu;
- B[f]=rr;
- f++;
- A[f]=rr;
- B[f]=rr;
- f++;
- }
- else {//cout<<uu<<" "<<rr<<endl;
- A[f]=uu;
- B[f]=rr;
- f++;
- }
- vis[rr]=1;
- q.push(rr);
- }
- }
- }
- }
- int main()
- {
- int i,j,n,u=-1;
- cin>>n;
- int a[n+5],b[n+5];
- for(i=0;i<n;i++)
- {
- cin>>a[i]>>b[i];
- if(a[i]!=b[i])
- {
- v[a[i]].pb(b[i]);
- v[b[i]].pb(a[i]);
- }
- else if(a[i]==b[i])
- {
- mm[a[i]]=1;
- }
- }
- int t1=bfs(3);
- memset(vis,0,sizeof vis);
- bfs_print(t1);
- for(i=0;i<f;i++)
- {
- //cout<<A[i]<<" "<<B[i]<<endl;
- for(j=0;j<n;j++)
- {
- //cout<<"u "<<a[j]<<" "<<b[j]<<endl;
- if(A[i]==a[j] && B[i]==b[j])
- {
- cout<<j+1<<" a"<<endl;
- break;
- }
- else if(A[i]==b[j] && B[i]==a[j])
- {
- cout<<j+1<<" b"<<endl;
- break;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement