hdu 1102 Constructing Roads 最小生成树Kruskal
来源:互联网 发布:明教 捏脸数据 编辑:程序博客网 时间:2024/05/16 17:30
这原本是最小生成树prim部分的题,但感觉kruskal好用,就用kruskal 打了
这道题题意有点变扭,修路,使所有村庄连通,使修路的街道总长度最小;原本还以为使街道的总长度最小,但案例过不了才发觉
使已经修了的路的权值为0,其他路的权值当然为路的长度,模板题
代码:
#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n;const int maxn=10010;int a[maxn][maxn];int fa[maxn];struct Node{ int u; int v; int weight;};Node b[maxn];bool cmp(Node x,Node y){ return x.weight<y.weight;}void init(){ int i; for(i=1;i<=n;i++) { fa[i]=i; }}int find(int u){ return u==fa[u]?fa[u]:fa[u]=find(fa[u]);}void join(int u,int v){ fa[find(u)]=find(v);}int main(){ while(scanf("%d",&n)!=EOF) { int i,j; init(); int start=0; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) scanf("%d",&a[i][j]); } int q; scanf("%d",&q); int u,v; while(q--) { scanf("%d%d",&u,&v); a[u][v]=0; a[v][u]=0; } for(i=1;i<=n;i++) { for(j=1;j<i;j++) { b[start].u=i; b[start].v=j; b[start++].weight=a[i][j]; } } sort(b,b+start,cmp); int cnt=0; int ans=0; for(i=0;i<start;i++) { int u=b[i].u; int v=b[i].v; if(find(u)!=find(v)) { ans+=b[i].weight; join(u,v); cnt++; } if(cnt==n-1) break; } printf("%d\n",ans); } return 0;}
0 0
- hdu hdu 1102 Constructing Roads(最小生成树Kruskal)
- HDU 1102 Constructing Roads 最小生成树-Kruskal算法
- 【最小生成树 kruskal】 hdu 1102 Constructing Roads
- hdu 1102 Constructing Roads 最小生成树Kruskal
- hdu-1102-Constructing Roads-最小生成树,Kruskal算法
- HDU 1102 Constructing Roads(最小生成树 Kruskal算法)
- HDU 1102 Constructing Roads (最小生成树,kruskal)
- HDU 1102 Constructing Roads(Kruskal最小生成树求最小花费)
- hdu 1102 Constructing Roads 最小生成树
- Constructing Roads - HDU 1102 最小生成树
- hdu 1102 Constructing Roads 最小生成树
- Constructing Roads(HDU 1102 最小生成树)
- hdu 1102 Constructing Roads 最小生成树
- HDU 1102 Constructing Roads 最小生成树
- Hdu 1102 Constructing Roads【最小生成树】
- hdu 1102 Constructing Roads(最小生成树)
- hdu 1102 Constructing Roads (最小生成树)
- HDU 1102 Constructing Roads【最小生成树】
- swing
- 欢迎使用CSDN-markdown编辑器
- JAVA平台介绍和基本数据类型讲解
- TP中可通过字段映射隐藏数据表的字段名
- sphinxse mysql 5.6编译错误
- hdu 1102 Constructing Roads 最小生成树Kruskal
- [Leetcode 241, Medium] Different Ways to Add Parentheses
- [Leetcode 240, Medium] Search a 2D Matrix II
- [Leetcode 227, Medium] Basic Calculator II
- [leetcde 212, Hard] Word Search II
- QT Creator环境配置实例
- hdu 2489 Minimal Ratio Tree 最小生成树kruskal
- 天声人語 20150730
- 第二次测试总结