team training 5 F 最小生成树
来源:互联网 发布:盼盼交友软件 编辑:程序博客网 时间:2024/06/08 12:33
这道题很好,,,
我一开始用的是那种苗条生成树(最大边-最小边的))方式,,这样当然是错了。//突然发现,,这样的学习是比较有收获的, ,我一定要多做这种学习,。,而且要快‘’
Gym-100803F]
看了大佬的代码,太好了,,学到了很多。。
(1)del的技术
(2)用bool f 来重用代码
(3)删掉边的思想。
(4)
#include<bits/stdc++.h>using namespace std;#define sf scanf#define pf printf#define mem(a,b) memset(a,b,sizeof(a))#define bug1 printf("bug1\n");#define N 505#define M 50050#define INF 1e9int u[M],v[M],w[M],id[M];int fa[N];bool del[M],vis[M];bool cmp(int a,int b){ return w[a]<w[b];}int n,m;int find(int x){ return fa[x]==x?x:fa[x]=find(fa[x]);}int cal(bool f){//这个f用的,, 衔接性太好了。 for(int i=1;i<=n;++i)fa[i]=i; int ans=0; int cnt=0; for(int k=0;k<m;++k){ int i=id[k]; if(del[i])continue; int fu=find(u[i]),fv=find(v[i]); if(fu==fv)continue; cnt++; fa[fu]=fv; ans+=w[i]; if(f)vis[i]=1; } if(cnt!=n-1)return INF;//这个地方返回INF,自己也是要会用的,,要不然反而小了怎么办。, return ans;}int main(){ while(~sf("%d%d",&n,&m)){ mem(vis,0); mem(del,0); for(int i=0;i<m;++i){ sf("%d%d%d",&u[i],&v[i],&w[i]); id[i]=i; } sort(id,id+m,cmp);//这种id的排序方式。。 for(int i=1;i<=n;++i)fa[i]=0; int minn=cal(1); int cnt=0,ans=0; for(int i=0;i<m;++i)if(vis[i]){//如此来遍历最小生成树的边, del[i]=1; if(cal(0)>minn){ cnt++; ans+=w[i]; } del[i]=0; } pf("%d %d\n",cnt,ans); }}
0 0
- team training 5 F 最小生成树
- Training:并查集(最小生成树)
- ecjtu-summer training #5 F
- 第八届省赛F题 (枚举+最小生成树)
- 【POJ2031】【最小生成树】【g++ f c++ lf】
- 1005. F.Snowy Roads最小生成树Kruskal算法
- codeforces 632F. Magic Matrix (最小生成树)
- 树链剖分,最小生成树(Drivers Dissatisfaction,cf 733F)
- GYM 100712 F.Travelling Salesman(最小生成树-Kruskal)
- 2017年ZJUT校赛-Problem F: 最小生成树
- team training 5 A题 spfa
- Summer Training Team Selection (1) Problem F Line Them Up 判断升序降序
- 2016 Team Training #21 Gym 100952 A D E F J
- HDU 4786 Fibonacci Tree 最小生成树 + 最大生成树 (2013成都区域赛 F题)
- HDU5723 2016 Multi-University Training Contest 1 (最小生成树+dfs)
- 2016 Multi-University Training Contest 1 1001 Abandoned country (最小生成树+DFS)
- HDU5723 2016 Multi-University Training Contest 1 (最小生成树+dfs)
- 2016 Multi-University Training Contest 1-1001---HDU 5723 Abandoned country(DFS+最小生成树)
- 【Linux】linux下atexit()函数的使用
- Android 数据库事务的个人理解
- [BZOJ 1177][Apio2009]Oil:DP
- Java并发(二)-原子性和Atomic类
- 53. Maximum Subarray
- team training 5 F 最小生成树
- PHP复习第二天PDO
- MapReduce编程实例:连接(Join)
- 学习淘淘商城第四十四课(首页跳转到搜索页面及搜索实现分析)
- 判断字符串是否回文
- ROC曲线,PR曲线,F1值和AUC概念解释及举例说明
- NIO Buffer代码示例
- 原生JS面向对象
- 记录CSDN账号被盗事件