제출 #930550

#제출 시각아이디문제언어결과실행 시간메모리
930550Faisal_SaqibJoker (BOI20_joker)C++17
39 / 100
2051 ms19132 KiB
#include <bits/stdc++.h> using namespace std; const int M=2e5+1; int n,m,q; bool mark[M],vis[M]; int val[M]; vector<pair<int,int>> ma[M],query; map<int,int> mx_r_for_l; bool found=0; void dfs(int x) { vis[x]=1; for(auto [y,ind]:ma[x]) { if(mark[ind]) continue; if(!vis[y]) { val[y]=(val[x]+1)%2; dfs(y); } else if((val[y]+1)%2!=val[x]) { found=1; } } } bool check(int l,int r) { // cout<<"Check "<<l<<' '<<r<<endl; for(int i=1;i<=n;i++) vis[i]=0; for(int i=0;i<m;i++) mark[i]=(l<=i and i<=r); found=0; for(int i=1;i<=n;i++) { if(!vis[i]) { dfs(i); } } // cout<<"Answer "<<found<<endl; return found; } int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); cin>>n>>m>>q; for(int i=0;i<m;i++) { int a,b; cin>>a>>b; // cout<<i+1<<"th edge is "<<a<<' '<<b<<endl; ma[a].push_back({b,i}); ma[b].push_back({a,i}); } vector<int> difl={-1}; for(int lp=0;lp<q;lp++) { int l,r; cin>>l>>r; l--; r--; query.push_back({l,r}); difl.push_back(l); } sort(begin(difl),end(difl)); for(int i=1;i<difl.size();i++) { if(difl[i-1]!=difl[i]) { int l=difl[i]; int sr=l-1; int er=m; // cout<<"Solve "<<l<<endl; while(sr+1<er) { int mid=(sr+er)/2; if(check(l,mid)) { //is there is odd cycle then we have to remove more edge sr=mid; } else{ er=mid; } } // cout<<"mx r"<<sr<<endl; mx_r_for_l[l]=sr; } } for(auto [l,r]:query) { if(mx_r_for_l[l]>=r) { cout<<"YES"<<'\n'; } else{ cout<<"NO"<<'\n'; } } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

Joker.cpp: In function 'int main()':
Joker.cpp:72:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |     for(int i=1;i<difl.size();i++)
      |                 ~^~~~~~~~~~~~
#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...