Submission #1271790

#TimeUsernameProblemLanguageResultExecution timeMemory
1271790mfong_123abcUnique Cities (JOI19_ho_t5)C++20
4 / 100
1822 ms9944 KiB
#include <bits/stdc++.h> using namespace std; int n,m,v1,v2,c[102100],dist[102100]; vector<int> adj[202100]; bool vis[4000], b2[4000]; int b[4000], cnt[4000]; int search(int st){ int ans=0; fill(cnt+1, cnt+1+n ,0); fill(vis+1, vis+1+n, false); fill(b2+1, b2+1+n, 0); queue<pair<int,int> > bfs; bfs.push({st,0}); vis[st]=true; while(!bfs.empty()){ int v=bfs.front().first, cd=bfs.front().second; // cout<<st<<" "<<v<<" "<<cd<<"\n"; dist[v]=cd; bfs.pop(); cnt[cd]++; b[cd]=v; for(auto v3: adj[v]){ if(vis[v3])continue; vis[v3]=1; bfs.push({v3, cd+1}); } } for(int i=1;i<=n;i++){ if(cnt[i]==1){ b2[c[b[i]]]=true; } } for(int i=1;i<=n;i++)ans+=b2[i]; return ans; } int main(){ cin>>n>>m; for(int i=1;i<n;i++){ cin>>v1>>v2; adj[v1].push_back(v2); adj[v2].push_back(v1); } for(int i=1;i<=n;i++)cin>>c[i]; for(int i=1;i<=n;i++)cout<<search(i)<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...