hdu 1879 最小生成树【prime算法】
2011-05-13 22:43
417 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1879
#include<stdio.h> #include<string> #define MAX 0x3fffffff int map[101][101],dis[101],vis[101]; int main() { int n; freopen("a.txt","r",stdin); while(scanf("%d",&n)&&n) { int i,j,k; for(i=0;i<=n;i++) for(j=0;j<=n;j++) map[i][j]=MAX; int m=n*(n-1)/2; for(i=0;i<m;i++)//构造邻接矩阵 { int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); if(d) map[a][b]=map[b][a]=0; else map[a][b]=map[b][a]=c; } int sum=0; for(i=1;i<=n;i++) { dis[i]=map[1][i]; } memset(vis,0,sizeof(vis)); vis[1]=1; for(i=1;i<n;i++)//n-1次迭代!!!!因为n个点有n-1条边!!!!!!!!!! { int min=MAX; for(j=1;j<=n;j++) { if(!vis[j] && dis[j]<min) { min=dis[j]; k=j; //记下最小的点 } } vis[k]=1;//为1表示该节点权值已经是最小,为0是还不确定,应继续更新 sum+=dis[k]; for(j=1;j<=n;j++) { if(!vis[j] && dis[j]>map[k][j])//注意k,j相接! dis[j]=map[k][j]; } } printf("%d/n",sum); } return 0; }
相关文章推荐
- hdu1879 继续畅通工程 (最小生成树之prim 算法)
- hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)
- hdu 1233(还是畅通工程)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)
- hdu 1162Eddy's picture Prime算法求最小生成树
- HDU 1879 继续畅通工程 最小生成树P算法
- poj1258 Agri-Net +hdu 1233 还是畅通工程 (最小生成树Prime算法)
- HDU 1863 畅通工程(prime——最小生成树)
- HDU 1879--继续畅通工程【kruskal && 最小生成树 && 水题】
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
- 【最小生成树+Prim】杭电 hdu 1879 继续畅通工程
- HDU - 1879 继续畅通工程(最小生成树kruskal)
- 最小生成树 prime 算法
- HDU 1879 畅通工程(最小生成树)
- USACO 3.1.1 Agri-Net 最短网络(最小生成树Prime算法)
- hdu 1879 最小生成树 prim算法实现
- (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)
- poj 1258 Agri-Net【最小生成树(prime算法)】
- hdu 1879 继续通畅工程(最小生成树)
- 最小生成树 prime算法 归纳
- hdu 2122 (prime 最小生成树)