写错了fa[x]=y
by YuRuochen @ 2022-08-26 14:29:35
能不用万能头文件吗? 因为万能头文件里的一些函数名你可能不知道,在定义变量名就可能定义成函数名 比如万能头文件里有个函数叫“time”,经常求时间的时候就会用到“变量类型 time;”
by liuhongcheng2013 @ 2022-08-26 14:45:48
@[liuhongcheng2013](/user/728429) 我比较喜欢用,应该也没事吧
by YuRuochen @ 2022-08-26 14:46:40
@[liuhongcheng2013](/user/728429) 可以帮我调调代码吗?
by YuRuochen @ 2022-08-26 14:47:10
@[liuhongcheng2013](/user/728429) 不用万能头的代码如下:
```
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a[10010],x,y,fa[10010],sum[10010],maxs;
int find(int x){
if(x==fa[x]) return x;
return fa[x]=find(fa[x]);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) fa[i]=i;
while(m--){
scanf("%d%d",&x,&y);
x=find(x);
y=find(y);
fa[x]=y;
}
for(int i=1;i<=n;i++) sum[find(i)]+=a[i];
for(int i=1;i<=n;i++) maxs=max(maxs,sum[i]);
printf("%d",maxs);
return 0;
}
by YuRuochen @ 2022-08-26 14:48:50
缩点想用并查集过?学 tarjan 去吧
by 方123456 @ 2022-08-26 14:57:23
@[方123456](/user/128754) 搞错了,是“有向图”,缩点我学过,以为可以用并查集来做(更简单)
by YuRuochen @ 2022-08-26 15:00:28