제출 #386224

#제출 시각아이디문제언어결과실행 시간메모리
386224nafis_shifatMergers (JOI19_mergers)C++14
34 / 100
3073 ms9572 KiB
#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> using namespace std; const int mxn=1e5+5; const int inf=1e9; vector<int> v; vector<int> adj[mxn]; int parent[mxn]; int sz[mxn]; int S[mxn]; vector<int> con[mxn]; int level[mxn]; int findrep(int u) { return parent[u] == u ? u : parent[u] = findrep(parent[u]); } void unite(int u,int v) { u = findrep(u); v = findrep(v); if(u == v) return; if(sz[u] > sz[v]) swap(u,v); parent[u] = v; sz[v] += sz[u]; } bool dfs(int cur,int prev,int src) { if(cur == src) return true; bool f = false; for(int u : adj[cur]) { if(u == prev) continue; f |= dfs(u,cur,src); } if(f) v.push_back(cur); return f; } void DFS(int cur,int prev) { level[cur] = level[prev] + 1; for(int u : adj[cur]) { if(u != prev) DFS(u,cur); } } int main() { int n,k; cin >> n >> k; for(int i = 1; i < n; i++) { int u,v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } for(int i = 1; i <= n; i++) { cin >> S[i]; con[S[i]].push_back(i); } for(int i = 1; i <= k; i++) { parent[i] = i; sz[i] = 1; } for(int i = 1; i <= k; i++) { sort(con[i].begin(),con[i].end(),[](int a,int b) { return level[a] < level[b]; }); for(int j = 1; j < con[i].size(); j++) { v.clear(); dfs(con[i][j - 1],-1,con[i][j]); for(int x : v) { unite(i,S[x]); } } } int deg[k + 1] = {}; for(int i = 1; i <= n; i++) { int x = findrep(S[i]); for(int u : adj[i]) { if(x == findrep(S[u])) continue; deg[findrep(S[u])]++; } } int leaf = 0; for(int i = 1; i <= k; i++) { if(parent[i] == i && deg[i] == 1) leaf++; } cout<<(leaf + 1) / 2<<endl; }

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

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