最小生成树 prim kruscal
2014-03-26 19:55
309 查看
prim算法:
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAX 0x7fffffff
using namespace std;
int dis[200][200],vis[200],low[200],n,m;
int prim()
{
int i,j,sum=0,pos=1;
memset(vis,0,sizeof(vis));
vis[1]=1;
for(i=1; i<=n; i++)
low[i]=dis[1][i];
low[1]=0;
for(j=1;j<n;j++)
{
int min=MAX;
for(i=1; i<=n; i++)
if(!vis[i]&&low[i]<min)
{
min=low[i];
pos=i;
}
if(min==MAX)break;
vis[pos]=1;
sum+=min;
for(i=1;i<=n;i++)
if(!vis[i]&&low[i]>dis[pos][i])
low[i]=dis[pos][i];
}
return sum;
}
int main()
{
int i,j,a,b,t;
scanf("%d%d",&n,&m);
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
dis[i][j]=MAX;
for(i=1; i<=m; i++)
{
scanf("%d%d%d",&a,&b,&t);
if(t<dis[a][b])dis[a][b]=dis[b][a]=t;
}
printf("%d\n",prim());
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAX 0x7fffffff
using namespace std;
int dis[200][200],vis[200],low[200],n,m;
int prim()
{
int i,j,sum=0,pos=1;
memset(vis,0,sizeof(vis));
vis[1]=1;
for(i=1; i<=n; i++)
low[i]=dis[1][i];
low[1]=0;
for(j=1;j<n;j++)
{
int min=MAX;
for(i=1; i<=n; i++)
if(!vis[i]&&low[i]<min)
{
min=low[i];
pos=i;
}
if(min==MAX)break;
vis[pos]=1;
sum+=min;
for(i=1;i<=n;i++)
if(!vis[i]&&low[i]>dis[pos][i])
low[i]=dis[pos][i];
}
return sum;
}
int main()
{
int i,j,a,b,t;
scanf("%d%d",&n,&m);
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
dis[i][j]=MAX;
for(i=1; i<=m; i++)
{
scanf("%d%d%d",&a,&b,&t);
if(t<dis[a][b])dis[a][b]=dis[b][a]=t;
}
printf("%d\n",prim());
return 0;
}
相关文章推荐
- HDOJ 1162 Eddy's picture 最小生成树 Kruscal && Prim
- COJ 1036小镇网(最小生成树prim和kruscal)
- 【prim + kruscal 】 最小生成树模板
- HDU 1863 畅通工程 (最小生成树--Kruscal、Prim)
- 最小生成树(Prim和Kruscal)
- ZOJ 1203 Swordfish 最小生成树 Kruscal && Prim
- poj 2075 最小生成树 kruscal与prim
- 修路问题-最小生成树 Prim&Kruscal
- poj 1287 Networking(prim or kruscal最小生成树)
- Nyoj 38 布线问题[最小生成树(Prim&&Kruscal)]
- POJ 2349 Arctic Network 最小生成树 prim && kruscal
- 图的邻接矩阵表示形式,DFS和BFS,最小生成树Prim和Kruscal,单源最短路径Dijkstra算法
- ZOJ 1372 Networking 最小生成树 Kruscal && Prim
- poj 2485 Highways(kruscal or prim最小生成树)
- ZOJ 2966 Build The Electric System 最小生成树 Kruscal && Prim
- hdu1162(最小生成树 prim or kruscal模板)
- 最小生成树(先写个prim,kruscal)
- hdu_1233_畅通工程再续_最小生成树_kruscal_prim
- 最小生成树之PRIM及KRUSCAL
- poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)