Submission #49833

#TimeUsernameProblemLanguageResultExecution timeMemory
49833A_H_GhaznaviBirokracija (COCI18_birokracija)C++14
60 / 100
1090 ms16000 KiB
// In the name of god // A.H.Ghaznavi #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=200010; int n,a[maxn],ansmain[maxn]; vector <int> v[maxn]; queue <int> q; pair <int ,int> ans[maxn]; bool mark[maxn],rad[maxn]; void bfs(int z) { mark[z]=true; for (int i=0;i<v[z].size();i++) { if (!mark[v[z][i]] || (mark[v[z][i]] && ans[z].first+1<ans[v[z][i]].first)) { ans[v[z][i]].first=ans[z].first+1; q.push(v[z][i]); mark[v[z][i]]=true; } } q.pop(); if (q.empty()) return; bfs(q.front()); } int main() { cin>>n; for (int i=1;i<=n;i++) ans[i].second=i; for (int i=2;i<=n;i++) { cin>>a[i]; v[a[i]].push_back(i); } q.push(1); bfs(1); sort (ans, ans+n+1); for (int i=1;i<=n;i++) { for (int i2=1;i2<=n;i2++) rad[i2]=false; rad[ans[i].second]=true; for (int i2=i;i2<=n;i2++) { if (ans[i2].first<=ans[i].first) continue; if (rad[a[ans[i2].second]]) { ansmain[ans[i].second]+=(ans[i2].first-ans[i].first+1); rad[ans[i2].second]=true; } } ansmain[ans[i].second]++; } for (int i=1;i<=n;i++) cout<<ansmain[i]<<" "; return 0; }

Compilation message (stderr)

birokracija.cpp: In function 'void bfs(int)':
birokracija.cpp:15:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<v[z].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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...