天才钱vs学霸周

Time Limit: 1000 MS     Memory Limit: 256 MB
Submit Status

有一天,天才钱学霸周闲的无聊玩起了游戏,游戏内容是这样的,现在有nn个城堡 mm个不同的桥,每一个桥连接着两个不同的城堡,并且已知这mm个桥可以使nn个城堡连通,此外每一个桥都有重量vv。两位大爷需要给出选择桥的方案使得所有城堡被连通,注意两位大爷的方案不能完全相同(至少存在一个桥不相同),已知周大爷优先给出方案(因此钱大爷的方案必须不同于周大爷)。规则很诡异,如果钱大爷的方案中桥的重量之和≤≤周大爷的方案中桥的重量之和,那么钱大爷获胜,反之周大爷获胜。两位大爷都很聪明,他们会给出最优方案。现在你需要计算谁会赢。

Input

第一行输入两个值nn(2≤n≤20002≤n≤2000),mm (n≤m≤200000n≤m≤200000) 接下来mm行,每一行输入三个值aa (1≤a≤n1≤a≤n),bb(1≤b≤n1≤b≤n),vv(1≤v≤10181≤v≤1018),其中a!=ba!=b

Output

如果钱大爷获胜输出“zin”,反之输出“ogisosetsuna” 。

Sample input and output

Sample Input Sample Output
2 2
1 2 1
1 2 1
zin

Hint

样例和test1不同

Source

2018 UESTC ACM Training for Graph Theory            
题解:其实就是最小生成树唯一性的判定Orz......;

利用并查集,按边权从小到大排序,然后对于每一个权值对应的边,先查找边的两个点不在同一集合的数量cnt1,然后再边枚举每一条不在同一集合的,并将边的两点合并到同一集合,计算数量cnt2,,对于每一权值,如果有cnt1>cnt2这说明最小生成树不唯一。

AC代码为:

#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; typedef long long LL;
const int N=2000+10;
const int M=200000+10;
int fa[N];
map<LL,int> mm;
vector<int> E[M]; struct node{
int u,v;
LL w;
}edge[M]; bool cmp(node a,node b)
{
return a.w<b.w;
} void init()
{
for(int i=0;i<N;i++) fa[i]=i;
} int fi(int x)
{
return x==fa[x]?x:fa[x]=fi(fa[x]);
} void Union(int x,int y)
{
int fx=fi(x),fy=fi(y);
if(fx!=fy) fa[fx]=fy;
} int main()
{
init();
int n,m,cnt=1;
int cnt1=0,cnt2=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++) scanf("%d%d%lld",&edge[i].u,&edge[i].v,&edge[i].w);
sort(edge+1,edge+1+m,cmp);
for(int i=1;i<=m;i++){
if(!mm[edge[i].w]) mm[edge[i].w]=cnt,cnt++;
int pos=mm[edge[i].w];
E[pos].push_back(i);
}
for(int i=1;i<cnt;i++)
{
for(int j=0;j<E[i].size();j++)
{
int pos=E[i][j];
if(fi(edge[pos].u)!=fi(edge[pos].v)) cnt1++;
}
for(int j=0;j<E[i].size();j++)
{
int pos=E[i][j];
if(fi(edge[pos].u)!=fi(edge[pos].v))
{
Union(edge[pos].u,edge[pos].v);
cnt2++;
}
}
if(cnt1>cnt2) break;
}
if(cnt1>cnt2) printf("zin\n");
else printf("ogisosetsuna\n");
return 0;
}

最小生成树唯一性判断-UESTC1959天才钱vs学霸周的更多相关文章

  1. 矩阵解压,网络流UESTC-1962天才钱vs学霸周2

    天才钱vs学霸周2 Time Limit: 500 MS     Memory Limit: 128 MB Submit Status 由于上次的游戏中学霸周输了,因此学霸周想出个问题为难天才钱,问题 ...

  2. CDOJ 1962 天才钱vs学霸周2【最大流】

    以s=0,t=n+m+1分别为超级源点和超级汇点.网络流中的流量以0为开始,题目要求从1到20,我们先把每个点都减去1,即ai - m,bi - n.然后源点s与n个顶点连容量为ai的路,汇点t与m个 ...

  3. 度及拓扑图的使用-UESTC1958学霸周选课

    学霸周选课 Time Limit: 1000 MS     Memory Limit: 128 MB Submit Status 众所周知周大爷不仅编程了得,专业课成绩更是名列前茅,恰巧又到了选课的季 ...

  4. The Unique MST(最小生成树的唯一性判断)

    Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...

  5. poj1679 The Unique MST(最小生成树唯一性)

    最小生成树的唯一性,部分参考了oi-wiki 如果一条不在最小生成树边集内的边,它可以替换一条在最小生成树边集内,且权值相等的边,那么最小生成树不是唯一的 同过kruskal来判断 考虑权值相等的边, ...

  6. ZOJ 2587 Unique Attack(最小割唯一性判断)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2587 题意:判断最小割是否唯一. 思路: 最小割唯一性的判断是先跑一遍最大 ...

  7. UVA1220Party at Hali-Bula(树的最大独立集 + 唯一性判断)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/H 紫书P282 员工和直属老板只能选一个,最多选多少人 思路 ...

  8. Android设备唯一性判断

    前段时间项目需要一个功能,就是在操作完某一个逻辑之后返回给客户一个红包,安全校验团队需要我们提供android设备的唯一标示,起初直接通过获取设备的imei号传给了server端,后台公司云迹监控发现 ...

  9. POJ 3342 - Party at Hali-Bula 树型DP+最优解唯一性判断

    好久没写树型dp了...以前都是先找到叶子节点.用队列维护来做的...这次学着vector动态数组+DFS回朔的方法..感觉思路更加的清晰... 关于题目的第一问...能邀请到的最多人数..so ea ...

随机推荐

  1. C语言程序设计100例之(8):尼科彻斯定理

    例8    尼科彻斯定理 题目描述 尼科彻斯定理可以叙述为:任何一个整数的立方都可以表示成一串连续的奇数的和.需要注意的是,这些奇数一定是连续的,如:1,3,5,7,9,…. 例如,对于整数5,5*5 ...

  2. 美团店铺数据抓取 token解析与生成

    美团.点评网的token都是用一套加密算法,实际上就是个gzip压缩算法.加密了2次,第一次是加密了个sign值,然后把sign值带进去参数中进行第二次加密,最后得出token 分析请求 打开上海美食 ...

  3. MyBatis动态语句if与choose的区别

    if(通过“title”和“author”两个参数进行可选搜索): <select id="findActiveBlogLike" resultType="Blog ...

  4. PHP导出成PDF你用哪个插件

    准备工作 首先查询了相关的类库,有FPDF,zendPDF,TcPDF等等.首先看了下先选择了FPDF,可以说除了中文字符以外没有什么问题,中文乱码而且看了下最新版本没有很好的解决方案,所以只能放弃. ...

  5. Thrift总结(四)Thrift实现双向通信

    前面介绍过 Thrift 安装和使用,介绍了Thrift服务的发布和客户端调用,可以查看我之前的文章:https://www.cnblogs.com/zhangweizhong/category/10 ...

  6. Spring-boot构建多模块依赖工程时,maven打包异常:程序包xxx不存在

    在qizhi项目改版的时候, 所有代码都迁移好了, 但是compile的时候报程序包*****不存在, 具体到某一个类就是: 找不到符号. 下面这篇文章是正解 http://hbxflihua.ite ...

  7. nyoj 83-迷宫寻宝(二) (计算几何, 叉积)

    83-迷宫寻宝(二) 内存限制:10MB 时间限制:1000ms 特判: No 通过数:2 提交数:6 难度:5 题目描述: 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个 ...

  8. ArcGIS API For Javascript:热力图不同级别下的优化方法

    我们在地图缩放的不同级别下,热力图的显示效果会不同,由于点密度与模糊参数默认是固定的,因此需要对参数进行动态修改,以满足不同缩放级别下可以得到较好的显示效果. 思路是监听地图缩放级别,将地图缩放级别作 ...

  9. 微信小程序 子组件给父组件传参

    子组件给父组件传参只需这4步: 子组件的两步: 1.子组件绑定函数 addInfo <button type="primary" bindtap="addInfo& ...

  10. 【翻译】全球用尽IPv4的一点思考

    作者:Dimple 公众号:奔跑吧攻城狮 简介:专属于Java和Android开发,和你聊聊职场话题,一同展望未来 作为小小号主的我表示很无力啊,这几天,天天都是热点.前有网易员工勇敢发声维护自己的利 ...