BZOJ1202:[HNOI2005]狡猾的商人
2024-10-12 02:40:03
浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html
题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=1202
带权并查集,同POI1733。
时间复杂度:\(O(Tm\alpha{n})\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
using namespace std;
const int maxn=105;
int n,m;
int fa[maxn],d[maxn];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int find(int x) {
if(fa[x]==x)return x;
int tmp=fa[x];
fa[x]=find(fa[x]);
d[x]+=d[tmp];
return fa[x];
}
int main() {
int T=read();
while(T--) {
n=read(),m=read();
for(int i=0;i<=n;i++)
fa[i]=i,d[i]=0;
bool ans=1;
for(int i=1;i<=m;i++) {
int l=read()-1,r=read(),x=read();
int p=find(l),q=find(r);
if(p==q&&d[r]-d[l]!=x) {ans=0;break;}
if(p!=q)fa[p]=q,d[p]=d[r]-d[l]-x;
}
if(ans)puts("true");
else puts("false");
}
return 0;
}
最新文章
- [nodemon] Internal watch failed: watch ENOSPC错误解决办法
- [译文]通过ID, TagName, ClassName, Name, CSS selector 得到element
- mybatis 配置返回集合collection时只有一条记录
- phalcon:跟踪sql语句
- Codeforces Round #133 (Div. 2)
- CrazePony飞行器--相关资料网址
- css清除浮动的几种方法整理
- codevs2492 上帝造题的七分钟 2
- javascript中的screen对象
- 完美脱离Windows!! Linux发行版第一系统 Manjaro 开箱教程 :)
- 【机器学习】异常检测算法(I)
- 【转】 ISP-镜头阴影校正(LSC)
- 基于MATLAB System Generator 搭建Display Enhancement模型
- 使用KeePass管理两步验证
- Pandas 库中excel的读写方法介绍
- 第六篇:Jmeter Ftp服务器的连接
- kafka 支持发布订阅
- 微软职位内部推荐-Senior Development Lead – Sharepoint
- jquery判断选择元素是否存在
- c++中对应java ShutdownHook的退出处理器