poj 1259 Agri-Net
来源:互联网 发布:淘宝中国制造店铺意义 编辑:程序博客网 时间:2024/05/22 10:42
kruskal 基础题
#include<stdio.h>#include<stdlib.h>#include <cmath>#include <iostream>#include <cstdlib>using namespace std;int parent[5000];int f[101][101];int k;struct edge{ int u,v,w;} edges[5000];int compare(const void *a, const void *b){return (*(edge *)a).w - (*(edge *)b).w;}int findset(int x){ int tmp,s; s=x; while (parent[s]>=0) s=parent[s]; while (s!=x) { tmp=parent[x]; parent[x]=s; x=tmp; } return s;}void unionset(int r1,int r2){ int rr1,rr2; rr1=findset(r1); rr2=findset(r2); int tmp=parent[rr1]+parent[rr2]; if (rr1==rr2) return; if (parent[rr1]>parent[rr2]) { parent[rr1]=rr2; parent[rr2]=tmp; } else { parent[rr2]=rr1; parent[rr1]=tmp; }}int main(){ int a,b,n,m; edge s[10001]; while (scanf("%d",&n)==1) { for (int i=0;i<=n;i++) parent[i]=-1; m=0; for (int i=0;i<n;i++) for (int k=0;k<n;k++) { scanf("%d",&f[i][k]); if ( i<k ) { edges[m].u=i;edges[m].v=k;edges[m].w=f[i][k]; m++; } } qsort(edges,m,sizeof(edges[0]),compare); int num=0; int ans=0; for (int i=0;i<m;i++) {if (findset(edges[i].u)!=findset(edges[i].v)) { num++; ans=ans+edges[i].w; unionset(edges[i].u,edges[i].v); }if (num>=n-1) break; } printf("%d\n",ans); }}
- poj 1259 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- poj 1258-Agri-net
- poj 1258 Agri-Net
- poj 1258 Agri-Net
- POJ+1258++Agri-Net
- Poj 1258 Agri-Net
- poj 1258 Agri-Net
- poj 1258 Agri-Net
- poj 1258 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- POJ 1258 Agri-Net
- poj-1258-Agri-Net
- poj-1258 Agri-Net
- Poj 1258 Agri-Net
- 学习计算机程序开发经典书籍推荐(学习提高的向导,值得珍藏)
- Oracle分区索引
- [DB] From Leng,Oracle 数据库报ora-653 ora-01654错误解决办法
- apache伪静态规则
- VC中实现历史记录的全面清除
- poj 1259 Agri-Net
- errno.h
- 我所知道的一个简单类
- Mark一下
- STRUTS2 文件上传
- 指针写乘法表
- HTML CSS初级
- task manager memory meaning
- 在delphi中怎么表示和使用静态的变量?