代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll MAXN=1e5+5;
ll fa[MAXN];
ll dist[MAXN];
int find(int x){
if(x==fa[x])return x;
int root=find(fa[x]);
dist[x]+=dist[fa[x]];
return fa[x]=root;
}
void merge(int l,int r,ll v){
int lf=find(l-1),rf=find(r);
if(lf==rf)return;
fa[lf]=rf;
dist[lf]=dist[r]-dist[l-1]+v;
}
ll check(int l,int r){
int lf=find(l-1),rf=find(r);
if(lf!=rf)return -1;
return abs(dist[r]-dist[l-1]); //abs()是因为不加就输出负数
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int N,M,Q;
cin>>N>>M>>Q;
for(int i=0;i<=N;i++)fa[i]=i;
while(M--){
int l,r;
ll s;
cin>>l>>r>>s;
merge(l,r,s);
}
while(Q--){
int l,r;
cin>>l>>r;
ll res=check(l,r);
if(res==-1)cout<<"UNKNOWN\n";
else cout<<res<<endl;
}
return 0;
}
WA:11~20 求助