[bzoj1202][HNOI2005]狡猾的商人[并查集]
2017-03-06 21:03
316 查看
给出[l,r]的区间和,相当于s[r]-s[l](前缀和思想)
一旦已经知道了 s[a]-s[b],s[b]-s[c],再给出一条[a,c]就可以判断了
一旦已经知道了 s[a]-s[b],s[b]-s[c],再给出一条[a,c]就可以判断了
#include <cstdio> #include <iostream> #include<cstring> using namespace std; int w; int n,m; int s,t,v; int fa[102]; int v1[102]; bool flag; int parent; inline int get(int x) { if (fa[x]==x) return x; parent=get(fa[x]); v1[x]+=v1[fa[x]]; fa[x]=parent; return fa[x]; } inline void work(int x,int y,int z) { int xf=get(x);int yf=get(y); if (xf!=yf) { fa[xf]=yf; v1[xf]=v1[y]-v1[x]-z; } else if (v1[y]-v1[x]!=z) flag=true; } int main() { scanf("%d",&w); for (register int i=1;i<=w;i++) { memset(v1,0,sizeof(v1)); flag=0; scanf("%d%d",&n,&m); for (register int j=0;j<=n;j++) fa[j]=j; for (register int j=1;j<=m;j++) { scanf("%d%d%d",&s,&t,&v); work(s-1,t,v); } if (flag) printf("false\n"); else printf("true\n"); } return 0; }
相关文章推荐
- [BZOJ1202]HNOI2005 狡猾的商人|并查集|差分约束
- BZOJ 1202 HNOI2005 狡猾的商人 并查集
- BZOJ 1202: [HNOI2005]狡猾的商人 带权并查集
- 【带权并查集】BZOJ1202(HNOI2005)[狡猾的商人]题解
- bzoj 1202: [HNOI2005]狡猾的商人 并查集好题
- bzoj1202: [HNOI2005]狡猾的商人(带权并查集)
- 【bzoj1202】 HNOI2005狡猾的商人 并查集
- BZOJ 1202: [HNOI2005]狡猾的商人 并查集
- [BZOJ]1202: [HNOI2005]狡猾的商人 带权并查集
- BZOJ1202 [HNOI2005]狡猾的商人(并查集)
- BZOJ1202 [HNOI2005]狡猾的商人 并查集维护前缀和
- BZOJ 1202: [HNOI2005]狡猾的商人【并查集】【路径迭代】
- 【BZOJ 1202】 [HNOI2005]狡猾的商人 (加权并查集)
- 【BZOJ1202】【HNOI2005】狡猾的商人 并查集
- 【BZOJ1202】【HNOI2005】狡猾的商人(并查集)
- [BZOJ1202][HNOI2005][并查集]狡猾的商人
- [BZOJ1202][HNOI2005]狡猾的商人(并查集)
- bzoj 1202: [HNOI2005]狡猾的商人(带权并查集)
- 【BZOJ1202】[HNOI2005]狡猾的商人 带权并查集
- BZOJ1202 [HNOI2005]狡猾的商人 【并查集】