1701

又是类似食物链的这一类题

这题是找与根节点的和差关系 因为0节点是已知的 为0  那么所有的都可以转换为与0的和差关系

可以规定合并的两节点 由大的指向小的 然后再更新和差关系

有可能最后有的不在0集合中 这时要确定最大初值 当然根据集合中出现的负值来确定 题目中工资不能出现负值 也不可大于10^9 在处理完关系后 再判断一下这两个条件 不满足的话就输出m

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstring>
#include<cstdlib>
using namespace std;
#define N 50010
#define LL long long
#define maxz 1000000000
int n,m;
int f[N];
LL r[N],mm[N];
int find(int x)
{
if(x!=f[x])
{
int o = f[x];
f[x] = find(f[x]);
r[x] += r[o];
}
return f[x];
}
int main()
{
int i,a,b,c;
int flag = ,tx = maxz;
scanf("%d%d",&n,&m);
for(i = ; i < n ; i++)
{
f[i] = i;
r[i] = ;
}
for(i = ;i <= m ; i++)
{
scanf("%d%d%d",&a,&b,&c);
if(flag)
continue;
int x = find(a),y = find(b);
if(x!=y)
{
if(x<y)
{
swap(x,y);
swap(a,b);
c = -c;
}
f[x] = y;
r[x] = -r[a]+r[b]+c;
}
else
{
if(r[a]-r[b]!=c)
{
flag = ;
tx = i; }
}
}
for(i = ; i < n ; i++)
{
int ho = find(i);
if(ho!=)
{
if(r[i]<)
{
mm[ho] = max(mm[ho],-r[i]);
}
}
}
for(i = ; i < n ; i++)
{
int ff = find(i);
if((r[i]+mm[ff])>maxz||(r[i]+mm[ff])<)
{
flag = ;
tx = m;
break;
}
}
if(flag)
{
printf("Impossible after %d statements\n",tx);
return ;
}
puts("Possible");
printf("0\n");
for(i = ; i < n ; i++)
{
int ff = find(i);
printf("%lld\n",r[i]+mm[ff]);
}
return ;
}

1701. Ostap and Partners(并查集-关系)的更多相关文章

  1. 并查集+关系的传递(poj 1182)

    题目:食物链 题意:给定一些关系.判断关系的正确性,后给出的关系服从之前的关系: 思路:难点不在并查集,在于关系的判断,尤其是子节点与根节点的关系的判断: 这个关系看似没给出,但是给出子节点与父节点的 ...

  2. POJ 1182 食物链 经典并查集+关系向量简单介绍

    题目: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有 ...

  3. POJ 1733 Parity game 【带权并查集】+【离散化】

    <题目链接> 题目大意: 一个由0,1组成的序列,每次给出一段区间的奇偶,问哪一条信息不合法. 解题分析: 我们用s[i]表示前i个数的前缀和,那么a b even意味着s[b]和s[a- ...

  4. noip 2010 关押罪犯 二分答案+二分图染色 || 并查集

    题目链接 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值&q ...

  5. 浅谈并查集&种类并查集&带权并查集

    并查集&种类并查集&带权并查集 前言: 因为是学习记录,所以知识讲解+例题推荐+练习题解都是放在一起的qvq 目录 并查集基础知识 并查集基础题目 种类并查集知识 种类并查集题目 并查 ...

  6. poj 1182 食物链(关系并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 62824   Accepted: 18432 Description ...

  7. Find them, Catch them(POJ 1703 关系并查集)

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 38668   Accepted: ...

  8. Codeforces 766D. Mahmoud and a Dictionary 并查集 二元敌对关系 点拆分

    D. Mahmoud and a Dictionary time limit per test:4 seconds memory limit per test:256 megabytes input: ...

  9. poj 2492(关系并查集) 同性恋

    题目;http://poj.org/problem?id=2492 卧槽很前卫的题意啊,感觉节操都碎了, t组测试数据,然后n,m,n条虫子,然后m行,每行两个数代表a和b有性行为(默认既然能这样就代 ...

随机推荐

  1. WCF、Web API、WCF REST、Web Service之区别

    http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and-WCF-R ...

  2. Canvas使用笔记

    1.Canvas画布有外部尺寸和内部尺寸,外部尺寸是指画布在html页面里的大小,内部尺寸是指画布内部像素的值.一般默认是在下面这句 <canvas id="myCanvas" ...

  3. linux 输入子系统(3)----事件处理(input_handler层)

    输入子系统主要设计input_dev.input_handler.input_handle.如下: [1]每个struct input_dev代表一个输入设备 struct input_dev { c ...

  4. ubuntu12.04 server + apache2 + wsgi + django1.6 部署

    最近在学Python和Django,想自己部署一个服务器试试 环境:ubuntu12.04 server | apache2 | django1.6 | python2.7 | mod_wsgi 在网 ...

  5. Python垃圾回收机制详解

    一.垃圾回收机制 Python中的垃圾回收是以引用计数为主,分代收集为辅.引用计数的缺陷是循环引用的问题. 在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存. #e ...

  6. MFC VC6++学习笔记

    一.mfc中基于对话框程序添加菜单栏 1打开对话框资源,然后右键->属性->常规 里面有个"菜单" 下拉框,然后选择IDM_USER! 2打开对话框,右键属性,选择刚才 ...

  7. WPF自定义控件之带倒计时的按钮--Button

    1.说明 之前做过一个小项目,点击按钮,按钮进入倒计时无效状态,计时完成后,恢复原样,现在就实现该效果---带倒计时的按钮 2.效果 1)正常状态               2)MouseOver( ...

  8. 2016 Multi-University Training Contest 1 Necklace 环排+二分匹配

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:由2*N颗宝石构成的环(阴阳宝石均为N颗且标号均从1~N) 之后给定M组 a,b;表示阳宝石a ...

  9. XSS前端防火墙

    前一段时间,在EtherDream大神的博客里看到关于XSS防火墙的一系列文章,觉得很有意思.刚好科创要做一个防火墙,就把XSS前端防火墙作为一个创新点,着手去实现了. 在实现过程中,由于各种原因,比 ...

  10. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    今天用PL/SQL连接虚拟机中的Oracle数据库,发现报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,也许你也遇到过,原因如下: oracle安装成功后,一直未停止 ...