#include<bits/stdc++.h> using namespace std; const int N=1e5+7; int n,p,q,tot[2],u[N],v[N],jl,vis[N]; vector<int>e[N];int ps; char ans[N*2][2];int x[N*2][2],y[N*2][2]; void dfs(int xx){ if(vis[xx]==2)return; if(!vis[xx]&&xx!=1){ vis[xx]=1; ans[++tot[ps]][ps]='+'; x[tot[ps]][ps]=1; y[tot[ps]][ps]=xx; } vis[xx]=2; for(auto v:e[xx])dfs(v); return; } void work(int s){ ps=s; memset(vis,0,sizeof(vis)); cin>>jl; for(int i=1;i<=jl;i++){ cin>>u[i]>>v[i]; e[u[i]].push_back(v[i]); e[v[i]].push_back(u[i]); if(u[i]==1)vis[v[i]]=1; else if(v[i]==1)vis[u[i]]=1; } dfs(1); for(int i=1;i<=jl;i++) if(min(u[i],v[i])>1){ ans[++tot[ps]][ps]='-'; x[tot[ps]][ps]=u[i]; y[tot[ps]][ps]=v[i]; } for(int i=1;i<=n;i++) e[i].clear(); return; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n; work(0); work(1); cout<<tot[0]+tot[1]<<"\n"; for(int i=1;i<=tot[0];i++) cout<<ans[i][0]<<" "<<x[i][0]<<" "<<y[i][0]<<"\n"; for(int i=tot[1];i;i--){ if(ans[i][1]=='+')ans[i][1]='-'; else ans[i][1]='+'; cout<<ans[i][1]<<" "<<x[i][1]<<" "<<y[i][1]<<"\n"; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include<bits/stdc++.h> using namespace std; const int N=1e5+7; int n,p,q,tot[2],u[N],v[N],jl,vis[N]; vector<int>e[N];int ps; char ans[N*2][2];int x[N*2][2],y[N*2][2]; void dfs(int xx){ if(vis[xx]==2)return; if(!vis[xx]&&xx!=1){ vis[xx]=1; ans[++tot[ps]][ps]='+'; x[tot[ps]][ps]=1; y[tot[ps]][ps]=xx; } vis[xx]=2; for(auto v:e[xx])dfs(v); return; } void work(int s){ ps=s; memset(vis,0,sizeof(vis)); cin>>jl; for(int i=1;i<=jl;i++){ cin>>u[i]>>v[i]; e[u[i]].push_back(v[i]); e[v[i]].push_back(u[i]); if(u[i]==1)vis[v[i]]=1; else if(v[i]==1)vis[u[i]]=1; } dfs(1); for(int i=1;i<=jl;i++) if(min(u[i],v[i])>1){ ans[++tot[ps]][ps]='-'; x[tot[ps]][ps]=u[i]; y[tot[ps]][ps]=v[i]; } for(int i=1;i<=n;i++) e[i].clear(); return; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n; work(0); work(1); cout<<tot[0]+tot[1]<<"\n"; for(int i=1;i<=tot[0];i++) cout<<ans[i][0]<<" "<<x[i][0]<<" "<<y[i][0]<<"\n"; for(int i=tot[1];i;i--){ if(ans[i][1]=='+')ans[i][1]='-'; else ans[i][1]='+'; cout<<ans[i][1]<<" "<<x[i][1]<<" "<<y[i][1]<<"\n"; } return 0; } |