Submission #884979

#TimeUsernameProblemLanguageResultExecution timeMemory
884979Ahmed57Jail (JOI22_jail)C++17
66 / 100
77 ms20564 KiB
#include <bits/stdc++.h> using namespace std; int pr[120001],dep[120001],vis[120001],deg[1001]; vector<int> adj[120001],tree[1001]; void dfs(int i,int ppp){ pr[i] = ppp; dep[i] = dep[ppp]+1; for(auto j:adj[i]){ if(j==ppp)continue; dfs(j,i); } } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); //freopen("input.txt","r",stdin); //freopen("out.txt","w",stdout); int t;cin>>t;z:while(t--){ int n; cin>>n; for(int i = 1;i<=n;i++){ adj[i].clear(); pr[i] = 0 , dep[i] = 0; vis[i] = 0; } bool ss = 1; for(int i = 0;i<n-1;i++){ int a,b;cin>>a>>b; adj[a].push_back(b); adj[b].push_back(a); if(a==i+1&&b==i+2){ }else ss = 0; } if(ss){ int q;cin>>q; vector<int> adj[n+1];multiset<int> lol; while(q--){ int a,b;cin>>a>>b; lol.insert(b); adj[a].push_back(b); } for(int i = 1;i<=n;i++){ if(adj[i].empty())continue; sort(adj[i].begin(),adj[i].end()); if((*lol.begin())<adj[i][0]){ cout<<"No\n";goto z; } for(auto j:adj[i])lol.erase(j); } cout<<"Yes\n"; }else{ dfs(1,0); int q;cin>>q; vector<pair<int,int>> qu; for(int i = 1;i<=q;i++){ int a,b; cin>>a>>b; qu.push_back({a,b}); } for(int i = 1;i<=q;i++){ deg[i] = 0 ;tree[i].clear(); } for(int i = 0;i<qu.size();i++){ int x = qu[i].first , y = qu[i].second; while(x!=y){ if(dep[x]<dep[y])swap(x,y); vis[x] = i+1; x = pr[x]; } vis[x] = i+1; for(int j = 0;j<qu.size();j++){ if(i==j)continue; if(vis[qu[j].first]==i+1&&vis[qu[j].second]==i+1){ cout<<"No\n"; goto z; } if(vis[qu[j].first]==i+1){ tree[i+1].push_back(j+1); deg[j+1]++; }else if(vis[qu[j].second]==i+1){ tree[j+1].push_back(i+1); deg[i+1]++; } } } int cnt = 0;queue<int> qe; for(int i = 1;i<=q;i++){ if(deg[i]==0){ qe.push(i); } } bool ss = 1; while(!qe.empty()){ int x = qe.front();qe.pop(); cnt++; for(auto j:tree[x]){ deg[j]--; if(deg[j]<0){ ss = 0;break; } if(deg[j]==0){ qe.push(j); } } if(ss==0)break; } if(cnt==q&&ss)cout<<"Yes\n"; else cout<<"No\n"; } } return 0; }

Compilation message (stderr)

jail.cpp: In function 'int main()':
jail.cpp:64:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |     for(int i = 0;i<qu.size();i++){
      |                   ~^~~~~~~~~~
jail.cpp:72:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |         for(int j = 0;j<qu.size();j++){
      |                       ~^~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...