Submission #951289

#TimeUsernameProblemLanguageResultExecution timeMemory
951289koukirocksJoker (BOI20_joker)C++17
25 / 100
88 ms23464 KiB
#include <bits/stdc++.h> #define speed ios_base::sync_with_stdio(0); cin.tie(0) #define all(x) (x).begin(),(x).end() #define F first #define S second using namespace std; typedef long long ll; typedef double db; typedef long double ldb; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll MAX=2e5+10,P=998244353; const ll INF=0x3f3f3f3f,oo=0x3f3f3f3f3f3f3f3f; int n,m,q; struct edge { int a,b; } egs[MAX]; vector<pii> G[MAX]; struct query{ int l,r,id; }qry[MAX]; int p[MAX]; int sz[MAX]; int rev[MAX]; void init() { for (int i=1;i<=n;i++) { p[i]=i; sz[i]=1; rev[i]=0; } } pii get(int a) { if (p[a]==a) return {a,0}; else { auto [fa,c]=get(p[a]); return {fa,c^rev[a]}; } } int main() { speed; cin>>n>>m>>q; for (int i=1;i<=m;i++) { int a,b; cin>>a>>b; egs[i]={a,b}; G[a].emplace_back(b,i); G[b].emplace_back(a,i); } init(); int ans=0; for (int i=m;i>=1;i--) { edge eg=egs[i]; auto [pa,ca]=get(eg.a); auto [pb,cb]=get(eg.b); // cout<<i<<" i\n"; // cout<<eg.a<<" "<<pa<<" "<<ca<<"\n"; // cout<<eg.b<<" "<<pb<<" "<<cb<<"\n"; if (pa==pb) { if (ca==cb) { ans=i; break; } } else { if (sz[pa]<sz[pb]) { swap(pa,pb); } p[pb]=pa; sz[pa]+=sz[pb]; rev[pb]=(ca==cb); } } // cout<<ans<<" ans\n"; for (int i=1;i<=q;i++) { cin>>qry[i].l>>qry[i].r; qry[i].id=i; if (qry[i].r>=ans) cout<<"NO\n"; else cout<<"YES\n"; } 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...