#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define endl '\n'
#define st first
#define nd second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
using namespace std;
int inf=1000000007;
ll infl=1000000000000000007;
ll mod=1000000007;
ll mod1=998244353;
const int N=30007;
int n;
bool is[N];
bool odw[N];
vector<int>G[N];
vector<pair<int,pair<int,int>>>ans;
void dfs(int v)
{
odw[v]=1;
for(auto u:G[v]) if(!odw[u]) dfs(u);
if(!is[v]) ans.pb({1,{1,v}});
}
vector<pair<int,pair<int,int>>> calc(vector<pair<int,int>>E)
{
ans.clear();
for(int i=1;i<=n;i++)
{
is[i]=0;
odw[i]=0;
G[i].clear();
}
for(auto [a,b]:E)
{
if(a==1) is[b]=1;
else if(b==1) is[a]=1;
else
{
ans.pb({0,{a,b}});
G[a].pb(b);
G[b].pb(a);
}
}
for(int i=2;i<=n;i++)
{
if(is[i]&&!odw[i]) dfs(i);
}
return ans;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
int m1;
cin>>m1;
vector<pair<int,int>>E1(m1);
for(int i=0;i<m1;i++)
{
cin>>E1[i].st>>E1[i].nd;
}
vector<pair<int,pair<int,int>>>res=calc(E1);
reverse(all(res));
int m2;
cin>>m2;
vector<pair<int,int>>E2(m2);
for(int i=0;i<m2;i++)
{
cin>>E2[i].st>>E2[i].nd;
}
vector<pair<int,pair<int,int>>>res1=calc(E2);
for(auto [a,p]:res1) res.pb({a^1,p});
cout<<sz(res)<<endl;
for(auto [a,p]:res)
{
if(a==1) cout<<"+ ";
else cout<<"- ";
cout<<p.st<<" "<<p.nd<<endl;
}
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 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 87 88 89 90 91 92 93 94 95 96 | #include <bits/stdc++.h> #define ll long long #define ld long double #define endl '\n' #define st first #define nd second #define pb push_back #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() using namespace std; int inf=1000000007; ll infl=1000000000000000007; ll mod=1000000007; ll mod1=998244353; const int N=30007; int n; bool is[N]; bool odw[N]; vector<int>G[N]; vector<pair<int,pair<int,int>>>ans; void dfs(int v) { odw[v]=1; for(auto u:G[v]) if(!odw[u]) dfs(u); if(!is[v]) ans.pb({1,{1,v}}); } vector<pair<int,pair<int,int>>> calc(vector<pair<int,int>>E) { ans.clear(); for(int i=1;i<=n;i++) { is[i]=0; odw[i]=0; G[i].clear(); } for(auto [a,b]:E) { if(a==1) is[b]=1; else if(b==1) is[a]=1; else { ans.pb({0,{a,b}}); G[a].pb(b); G[b].pb(a); } } for(int i=2;i<=n;i++) { if(is[i]&&!odw[i]) dfs(i); } return ans; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; int m1; cin>>m1; vector<pair<int,int>>E1(m1); for(int i=0;i<m1;i++) { cin>>E1[i].st>>E1[i].nd; } vector<pair<int,pair<int,int>>>res=calc(E1); reverse(all(res)); int m2; cin>>m2; vector<pair<int,int>>E2(m2); for(int i=0;i<m2;i++) { cin>>E2[i].st>>E2[i].nd; } vector<pair<int,pair<int,int>>>res1=calc(E2); for(auto [a,p]:res1) res.pb({a^1,p}); cout<<sz(res)<<endl; for(auto [a,p]:res) { if(a==1) cout<<"+ "; else cout<<"- "; cout<<p.st<<" "<<p.nd<<endl; } return 0; } |
English