#include<bits/stdc++.h> using namespace std; vector<pair<char, pair<int, int>>> odp; vector<int> graf[50007]; vector<int> graf2[50007]; bitset<50007> jedynki; bitset<50007> jedynki2; bitset<50007> vis; bitset<50007> vis2; vector<pair<int, int>> sa; void DFSw(int v){ vis[v]=1; if(!jedynki[v]){ jedynki[v]=1; odp.push_back({'+', {1, v}}); graf2[1].push_back(v); graf2[v].push_back(1); } else{ graf2[1].push_back(v); graf2[v].push_back(1); } for(int i=0; i<graf[v].size(); i++){ if(!vis[graf[v][i]]){ DFSw(graf[v][i]); } } } void DFS2(int v){ vis2[v]=1; for(int i=0; i<graf2[v].size(); i++){ if(!vis2[graf2[v][i]]){ DFS2(graf2[v][i]); } } if(!jedynki2[v]){ odp.push_back({'-', {1,v}}); } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; int M_s; int M_d; int a,b; cin>>n>>M_s; jedynki[1]=1; jedynki2[1]=1; for(int i=1; i<=M_s; i++){ cin>>a>>b; sa.push_back({a,b}); graf[a].push_back(b); graf[b].push_back(a); if(min(a,b)==1){ jedynki[max(a,b)]=1; } } DFSw(1); for(int i=0; i<sa.size(); i++){ if(sa[i].first!=1 && sa[i].second!=1){ odp.push_back({'-', {sa[i].first, sa[i].second}}); } } cin>>M_d; for(int i=1; i<=M_d; i++){ cin>>a>>b; if(min(a,b)!=1){ odp.push_back({'+', {a,b}}); graf2[a].push_back(b); graf2[b].push_back(a); } else{ jedynki2[max(a,b)]=1; } } DFS2(1); cout<<odp.size()<<'\n'; for(int i=0; i<odp.size(); i++){ cout<<odp[i].first<<" "<<odp[i].second.first<<" "<<odp[i].second.second<<'\n'; } }
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include<bits/stdc++.h> using namespace std; vector<pair<char, pair<int, int>>> odp; vector<int> graf[50007]; vector<int> graf2[50007]; bitset<50007> jedynki; bitset<50007> jedynki2; bitset<50007> vis; bitset<50007> vis2; vector<pair<int, int>> sa; void DFSw(int v){ vis[v]=1; if(!jedynki[v]){ jedynki[v]=1; odp.push_back({'+', {1, v}}); graf2[1].push_back(v); graf2[v].push_back(1); } else{ graf2[1].push_back(v); graf2[v].push_back(1); } for(int i=0; i<graf[v].size(); i++){ if(!vis[graf[v][i]]){ DFSw(graf[v][i]); } } } void DFS2(int v){ vis2[v]=1; for(int i=0; i<graf2[v].size(); i++){ if(!vis2[graf2[v][i]]){ DFS2(graf2[v][i]); } } if(!jedynki2[v]){ odp.push_back({'-', {1,v}}); } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; int M_s; int M_d; int a,b; cin>>n>>M_s; jedynki[1]=1; jedynki2[1]=1; for(int i=1; i<=M_s; i++){ cin>>a>>b; sa.push_back({a,b}); graf[a].push_back(b); graf[b].push_back(a); if(min(a,b)==1){ jedynki[max(a,b)]=1; } } DFSw(1); for(int i=0; i<sa.size(); i++){ if(sa[i].first!=1 && sa[i].second!=1){ odp.push_back({'-', {sa[i].first, sa[i].second}}); } } cin>>M_d; for(int i=1; i<=M_d; i++){ cin>>a>>b; if(min(a,b)!=1){ odp.push_back({'+', {a,b}}); graf2[a].push_back(b); graf2[b].push_back(a); } else{ jedynki2[max(a,b)]=1; } } DFS2(1); cout<<odp.size()<<'\n'; for(int i=0; i<odp.size(); i++){ cout<<odp[i].first<<" "<<odp[i].second.first<<" "<<odp[i].second.second<<'\n'; } } |