解题思路:
/*

带权并查集模板

*/
注意事项:

参考代码:

#include<bits/stdc++.h>


typedef long long ll;

using namespace std;



int fa[100005];

ll d[100005];



void initset(int n){

for(int i=0;i<=n;i++){

fa[i] = i;

d[i] = 0;

}

}


int find(int x){

if(x != fa[x]){

int t = fa[x];

fa[x] = find(fa[x]);

d[x] += d[t];

}

return fa[x];

}


void unionset(int x,int y,ll v){

int a = find(x);

int b = find(y);

fa[a] = b;

d[a] = d[y]+v-d[x];

}


int main(){

int n,m,q;

scanf("%d%d%d",&n,&m,&q);

initset(n);

for(int i=0;i<m;i++){

int a,b;

ll c;

scanf("%d%d%lld",&a,&b,&c);

a--;

unionset(a,b,c);

}

for(int i=0;i<q;i++){

int a,b;

scanf("%d%d",&a,&b); 

a--;

int na = find(a);

int nb = find(b);

if(na == nb){

ll ans = d[a]-d[b];

cout<<ans;

}

else{

cout<<"UNKNOWN";

}

cout<<"\n";

}

}







点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论