BZOJ 1202 狡猾的商人

前缀和+带权并查集。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 150
using namespace std;
int tt,n,m,s,t,v,fath[maxn],dis[maxn],flag=;
int getfather(int x)
{
if (fath[x]==x) return x;
int ret=getfather(fath[x]);
dis[x]+=dis[fath[x]];
fath[x]=ret;
return ret;
}
void unionn()
{
if (!flag) return;
int f1=getfather(s),f2=getfather(t+);
if (f1==f2)
{
if (dis[t+]-dis[s]!=v) flag=;
}
else
{
fath[f2]=f1;
dis[f2]=v+dis[s]-dis[t+];
}
return;
}
void work()
{
flag=;
scanf("%d%d",&n,&m);
for (int i=;i<=n+;i++)
{
fath[i]=i;
dis[i]=;
}
for (int i=;i<=m;i++)
{
scanf("%d%d%d",&s,&t,&v);
unionn();
}
if (flag) printf("true\n");
else printf("false\n");
}
int main()
{
scanf("%d",&tt);
for (int i=;i<=tt;i++)
work();
return ;
}
上一篇:C#微信公众号开发系列教程(接收事件推送与消息排重)


下一篇:PHP使用header+Location实现网站301重定向