Submission #121476

#TimeUsernameProblemLanguageResultExecution timeMemory
121476baqargamTropical Garden (IOI11_garden)C++14
69 / 100
5018 ms31928 KiB
#include<bits/stdc++.h> #include "garden.h" #include "gardenlib.h" using namespace std; int a,k,n,m,q,p,v1[300005],sz,sz1,sz2,st,ch,res[2005]; vector<pair<int,int> >v[300005]; vector<int>rv[300005]; set<int>s; void cch(int x,int dis,int st){ for(int i=0;i<rv[x].size();i++){ if(rv[x][i]==st) {sz=dis+1;return;} cch(rv[x][i],dis+1,st); } } void dfs(int x,int dis,int st){ //cout<<st<<" "<<x<<" "<<dis<<" "<<k<<" "<<sz<<endl; if(x%2==0 && abs(k-dis)%sz==0 && dis<=k) { s.insert(x); } for(int i=0;i<rv[x].size();i++){ if(rv[x][i]==st) continue; dfs(rv[x][i],dis+1,st); } } void count_routes(int N, int M, int P, int R[][2], int Q, int G[]) { int n=N,m=M,p=P; for(int i=0;i<m;i++){///grafi1 int a=R[i][0]; int b=R[i][1]; v[a].push_back({i,b}); v[b].push_back({i,a}); } for(int i=0;i<n;i++){ sort(v[i].begin(),v[i].end()); } for(int i=0;i<n;i++){///grafi2 if(v[i].size()==1) { int to=v[i][0].second; int val=v[i][0].first; if(v[to][0].first==val) v1[2*i+1]=2*to+1; else v1[2*i+1]=2*to; if(v[to][0].first==val) v1[2*i]=2*to+1; else v1[2*i]=2*to; } else { int to=v[i][0].second; int val=v[i][0].first; // cout<<i<<" "<<to<<" "<<val<<" "<<v[to][0].first<<endl; if(v[to][0].first==val) v1[2*i]=2*to+1; else v1[2*i]=2*to; to=v[i][1].second; val=v[i][1].first; // cout<<i<<" "<<to<<" "<<val<<" "<<v[to][0].first<<endl; if(v[to][0].first==val) v1[2*i+1]=2*to+1; else v1[2*i+1]=2*to; } } for(int i=0;i<2*n;i++){ //cout<<i<<" "<<v1[i]<<endl; rv[v1[i]].push_back(i); } sz=1000000003;cch(2*p,0,2*p);sz1=sz; sz=1000000003;cch(2*p+1,0,2*p+1);sz2=sz; for(int i=0; i<Q; i++) { k=G[i]; s.clear(); sz=sz1;dfs(2*p,0,2*p); sz=sz2;dfs(2*p+1,0,2*p+1); sz=s.size(); answer(sz); } }

Compilation message (stderr)

garden.cpp: In function 'void cch(int, int, int)':
garden.cpp:13:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rv[x].size();i++){
                 ~^~~~~~~~~~~~~
garden.cpp: In function 'void dfs(int, int, int)':
garden.cpp:25:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rv[x].size();i++){
                 ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...