Submission #1015415

#TimeUsernameProblemLanguageResultExecution timeMemory
1015415amirhoseinfar1385Friend (IOI14_friend)C++17
19 / 100
3 ms13148 KiB
#include "friend.h" #include<bits/stdc++.h> using namespace std; const int maxn=100000+10; struct node{ int w,vas,did; node(){ w=vas=did=0; } set<int>adj,revadj; }; node alln[maxn]; int nem[maxn],miad[maxn],jam[maxn],te=0,now; void adde(int u,int v){ alln[u].adj.insert(v); alln[v].revadj.insert(u); } void dorost(int v,int w){ nem[v]=te; miad[v]=te+1; jam[v]=te+2; alln[miad[v]].w=w; alln[jam[v]].adj.insert(nem[v]); alln[jam[v]].adj.insert(miad[v]); alln[jam[v]].vas=1; te+=3; } void comp(int v,int u,int val,int no){ dorost(v,val); if(no==0){ adde(miad[u],nem[v]); adde(nem[u],jam[v]); }else if(no==1){ now++; dorost(now,0); swap(alln[nem[u]].adj,alln[nem[now]].adj); swap(alln[miad[u]].adj,alln[miad[now]].adj); adde(miad[u],miad[now]); adde(nem[u],nem[now]); adde(miad[v],miad[now]); adde(nem[v],nem[now]); for(auto x:alln[nem[u]].revadj){ adde(x,nem[v]); } for(auto x:alln[miad[u]].revadj){ adde(x,miad[v]); } for(auto x:alln[jam[u]].revadj){ adde(x,jam[v]); } }else{ } } void calc(int u){ if(alln[u].did==1){ return ; } alln[u].did=1; if(alln[u].vas==1){ for(auto x:alln[u].adj){ calc(x); alln[u].w=max(alln[u].w,alln[x].w); } }else{ for(auto x:alln[u].adj){ calc(x); alln[u].w+=alln[x].w; } } // cout<<u<<" "<<alln[u].w<<endl; } int findSample(int n,int confidence[],int host[],int protocol[]){ dorost(0,confidence[0]); now=n+1; for(int i=1;i<n;i++){ // cout<<"wtf: "<<i<<" "<<host[i]<<endl; comp(i,host[i],confidence[i],protocol[i]); } // for(int i=0;i<n;i++){ // cout<<miad[i]<<" "<<nem[i]<<" "<<jam[i]<<endl; // } calc(jam[0]); return alln[jam[0]].w; }
#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...