最小生成树记路径
来源:互联网 发布:电话轰炸机软件免费版 编辑:程序博客网 时间:2024/05/23 02:06
#include<string.h>#include<stdio.h> #include<string> #include<iostream> #include<algorithm> using namespace std; const int inf=0xffffff; int a[1005][1005],vis[1005],d[1005],n,m,w,pre[1005]; struct node{int x,y; }f1[10005];bool cmp(node a,node b){if(a.x==b.x) return a.y<b.y;else return a.x<b.x;}int l;int prime() { int sum=0,i,j,k,v,ans=0; for(i=1;i<=n;i++) { int u=0,min=inf; for(j=1;j<=n;j++) { if(vis[j]==0&&d[j]<min) { u=j; min=d[j]; } } ans+=d[u]; vis[u]=1; if(a[u][pre[u]]!=inf)//记路径 { f1[l].x=pre[u]; f1[l].y=u; l++; } for(v=1;v<=n;v++) { if(vis[v]==0&&a[u][v]!=inf&&a[u][v]<d[v]) { d[v]=a[u][v]; pre[v]=u;//路径 } } } return ans; }int main(){int u,v,f,i;while(~scanf("%d%d",&n,&m)){ l=0; if(n==0) break; memset(vis,0,sizeof(vis)); fill(a[0],a[0]+1005*1005,inf); fill(d,d+1005,inf); d[1]=0; for(i=1;i<=m;i++){scanf("%d%d%d",&u,&v,&f);a[u][v]=f;a[v][u]=f;}int p=prime();sort(f1,f1+l,cmp);for(i=0;i<l;i++){printf("%d %d\n",f1[i].x,f1[i].y);}}}
阅读全文
0 0
- 最小生成树记路径
- 最小生成树,最短路径
- ZJU 3204 最小生成树+路径保存
- 最小生成树和最短路径
- 最小生成树,最短路径算法
- 最小生成树和最短路径
- 单源最短路径+最小花费生成树
- 最小生成树(不记录路径)
- 最小生成树(记录路径)
- 最小生成树和最短路径
- poj1751 highways 最小生成树记录路径
- 最小生成树&&最短路径
- 最小生成树&最短路径
- 最小生成树和最短路径
- 最小生成树和最短路径
- 最小生成树Prim算法和单源最短路径Dijkstra算法
- 单源最短路径、最小生成树及堆的Java实现
- 图的周游,最短路径和最小生成树
- 横拉列表
- 统计学习方法笔记:1.2 线性支持向量机与软间隔最大化
- LeetCode-561. Array Partition I
- neural_style的使用-人人都是艺术家
- C# web 分页控件
- 最小生成树记路径
- java 数据类型
- 【unity】【shader】屏幕高斯模糊(Gaussian Blur)后期特效的实现
- Springboot 1.5.X不再支持Velocity
- SQL注入
- Sign In and Sign Out
- idea中mybatis-generator插件实现数据库表自动生成相关接口、pojo、和xml配置
- 从输入URL到页面加载发生了什么
- 算法学习之递归--表达式计算(简单计算器)