제출 #716274

#제출 시각아이디문제언어결과실행 시간메모리
716274Ahmed57Mergers (JOI19_mergers)C++14
100 / 100
632 ms87040 KiB
#include <bits/stdc++.h> using namespace std; vector<int> adj[500001]; int dep[500001] , par[500001]; //DSU int pr[500001]; int gs[500001]; int findleader(int x){ if(pr[x]==x){ return x; } return pr[x] = findleader(pr[x]); } void mergegroup(int x,int y){ int led1 = findleader(x); int led2 = findleader(y); if(led1==led2)return; if(gs[led1]>gs[led2]){ pr[led2]=led1; gs[led1]+=gs[led2]; }else{ pr[led1]=led2; gs[led2]+=gs[led1]; } } void merge(int a,int b){ while(a!=b){ if(dep[a] < dep[b])swap(a, b); pr[a]=findleader(par[a]); a = pr[a]; } } void dfs(int i ,int prr){ par[i] = prr; dep[i] = dep[prr]+1; for(auto j:adj[i]){ if(j!=prr)dfs(j,i); } } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,k; cin>>n>>k; for(int i = 0;i<=n;i++){ gs[i] = 1, pr[i] = i; } vector<int> col[k+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); } dfs(1,0); for(int i = 1;i<=n;i++){ int x;cin>>x; col[x].push_back(i); } for(int i = 1;i<=k;i++){ for(int j = 1;j<col[i].size();j++){ merge(col[i][0],col[i][j]); } } int deg[n+1] = {0}; for(int i = 1;i<=n;i++){ for(auto j:adj[i]){ if(findleader(i)!=findleader(j)){ deg[findleader(i)]++;deg[findleader(j)]++; } } } int cnt = 0; for(int i = 1;i<=n;i++){ if(deg[i]==2){ cnt++; } } cout<<(cnt+1)/2<<"\n"; }

컴파일 시 표준 에러 (stderr) 메시지

mergers.cpp: In function 'int main()':
mergers.cpp:62:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |         for(int j = 1;j<col[i].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...