首页 > 代码库 > bzoj4690: Never Wait for Weights 并查集
bzoj4690: Never Wait for Weights 并查集
裸带权并查集
#include<cstdio>#define N 100005int m,i,j,s,t,u,d[N],p[N];char k;int find(int i){ if(p[i]^i&&find(p[i])) d[i]+=d[p[i]]; return p[i]=p[p[i]];}int main(){ while(scanf("%d%d",&s,&m)&&s){ for(;s;--s) d[p[s]=s]=0; while(m--){ scanf(" %c%d%d",&k,&s,&t); i=find(s),j=find(t); if(k==‘!‘){ scanf("%d",&u); p[i]=j; d[i]=d[t]+u-d[s]; }else if(i^j) puts("UNKNOWN"); else printf("%d\n",d[s]-d[t]); } }}
bzoj4690: Never Wait for Weights 并查集
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。