并查集,60pts。WA on #3 #4 #5 #7

P3387 【模板】缩点

写错了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


|