제출 #1280358

#제출 시각아이디문제언어결과실행 시간메모리
1280358jackofall718Experimental Charges (NOI19_charges)C++20
100 / 100
48 ms9404 KiB
#include <bits/stdc++.h> #include <chrono> #define ll long long int #define endl '\n' #define vn vector<ll> #define vi vector<pair <ll,ll>> using namespace std; using namespace std::chrono; const int MAX_N = 1e9 + 7; #define pii pair<ll,ll> const ll INF = 0x3f3f3f3f3f3f3f3f; #define pb push_back #define srt(vp) sort(vp.begin(), vp.end()) vn parent;//naming link causes errors vector <vn> adj; vn status; vn sizes; ll find (ll n){ while ( n != parent[n])n=parent[n]; return n; }; ll same(ll x, ll y){ return find(x)==find(y); }; void unite(ll x, ll y){ x = find(x); y = find(y); if (sizes[x]<sizes[y])swap(x,y); sizes[x]+=sizes[y]; parent[y]=x; adj[x].insert(adj[x].end(),adj[y].begin(),adj[y].end());//gpt for this impl } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); auto start = high_resolution_clock::now(); ll n,q; cin>>n>>q; parent.resize(n+1); adj.resize(n+1); status.resize(n+1,1); sizes.resize(n+1); for (int i=1;i<=n;i++)sizes[i]=1; for (int i=1;i<=n;i++)parent[i]=i; for (int i=1;i<=n;i++)adj[i].pb(i); for (int i=0;i<q;i++){ char a; ll b,c; cin>>a>>b>>c; if (a=='A'){ if (find(b)==find(c))continue; if ((status[b]^1) == status[c]) { unite(b,c); } else{ b = find(b); c= find(c); if (sizes[b]<sizes[c])swap(b,c); for (auto &x:adj[c])status[x]^=1; unite(b,c); } } else if (a=='R'){ if (find(b)==find(c))continue; if (status[b]==status[c]){ unite(b,c); } else{ b = find(b); c= find(c); if (sizes[b]<sizes[c])swap(b,c); for (auto &x:adj[c])status[x]^=1; unite(b,c); } } else{ if (find(b) != find(c))cout<<"?"<<endl; else if (status[b]==status[c])cout<<"R"<<endl; else cout<<"A"<<endl; } } auto stop = high_resolution_clock::now(); auto duration = duration_cast<microseconds>(stop - start); //cout << "Time taken by function: " << duration.count() << " microseconds" << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...