Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
230138 | 陆沛埦 | **小美的树上染色 | C++ | 解答错误 | 0 | 1000 MS | 1140 KB | 727 | 2024-01-07 16:24:47 |
#include <bits/stdc++.h> using namespace std; int fa[100002]; bool vis[100002]; int n,ans; int a[100002]; int find(int x) { if(fa[x]!=x) { fa[x]=find(fa[x]); } return fa[x]; } int main() { scanf("%d",&n); for(int i=1; i<=n; i++) { fa[i]=i; vis[i]=false; } for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } for(int i=1; i<n; i++) { int a,b; scanf("%d%d",&a,&b); a=find(a); b=find(b); if(a!=b) { fa[a]=b; } } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i!=j&&fa[i]==fa[j]) { if(vis[i]!=true&&vis[j]!=true) { ans+=2; vis[i]=true; vis[j]=true; } } } } printf("%d\n",ans); return 0; }