hdu3047Zjnu Stadium 带权并查集
来源:互联网 发布:万科华润宝能大战知乎 编辑:程序博客网 时间:2024/06/14 01:48
//n列个座位,排数为无穷//m个询问//a,b,x ,a在b前面x列//问这m个询问与其前面询问冲突的有多少个 //带权并查集存下每个点到这个集合中最前的距离#include<cstdio>#include<cstring>#include<iostream>using namespace std ;const int maxn = 50010 ;int F[maxn] ;int v[maxn] ;int n , m ;int find(int x){ if(x == F[x]) return F[x] ; int t = F[x] ; F[x] = find(t) ; v[x] += v[t] ; return F[x] ;}bool join(int x , int y , int num){ int fx = find(x) ; int fy = find(y) ; if(fx == fy&&v[y] != v[x] + num) return false ; else if(fx == fy)return true ; else { if(v[x] + num > v[y]) { F[fy] = fx; v[fy] = v[x] + num - v[y] ; } else { F[fx] = fy ; v[fx] = v[y] - (v[x] + num) ; } return true ; }}int main(){ //freopen("in.txt" ,"r" , stdin) ; while(~scanf("%d%d" ,&n , &m)) { for(int i = 1;i <= n;i++) F[i] = i ,v[i] = 0; int ans = 0 ; while(m--) { int a , b , x ; scanf("%d%d%d" ,&a , &b , &x) ; if(!join(a , b , x)) ans++ ; } cout<<ans<<endl; } return 0 ;}
0 0
- hdu3047Zjnu Stadium 带权并查集
- HDU3047Zjnu Stadium(并查集)
- HDU 3047 Zjnu Stadium (带权并查集)
- hdu 3047 Zjnu Stadium(带权并查集)
- hdu_3407_Zjnu Stadium(带权并查集)
- Zjnu Stadium(hdu3047带权并查集)
- hdu 3047 Zjnu Stadium (带权并查集)
- HDU 3047 Zjnu Stadium 带权并查集
- hdu 3047 Zjnu Stadium (带权并查集)
- HDU 3047 Zjnu Stadium 带权并查集
- HDU 3047 Zjnu Stadium 带权并查集
- HDU - 3047 Zjnu Stadium 带权并查集
- hdu 3047 Zjnu Stadium【带权并查集】
- hdu 3047 Zjnu Stadium 带权并查集
- hdu 3047 Zjnu Stadium 带权并查集
- hdu3047 Zjnu Stadium--带权并查集
- HDU 3047 Zjnu Stadium(带权并查集)
- hdu 3047 Zjnu Stadium【带权并查集】
- hdu 1789 Doing Homework again
- nyoj 14 会场安排问题【贪心】
- spark RDD的原理
- Markdown编辑器使用说明
- 字母的大小写互换
- hdu3047Zjnu Stadium 带权并查集
- Winsock API学习记录
- Spring源码学习-2.IOC-ApplicationContext资源定位
- 黑马程序员——解构Hello Objcetive-C程序
- 输入一句话 计算输出的长度
- 【zTree系列】树形结构zTree
- linux如何设置静态ip
- ffmpeg新旧接口,新旧函数替换
- visual studio 2013中常用的快捷键