POJ 2377 Bad Cowtractors(最大生成树)
2015-09-29 17:41
483 查看
题目大意:裸的最大生成树
思路:就是和最小生成树相似,Map数组初始化为0,并且在建立生成树的时候要选去最大的边进入集合。
#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
#define inf 0x3f3f3f3f
using namespace std;
int n;
int Map[1010][1010],dis[1010];
bool vis[1010];
int prim()
{
int i,j;
memset(vis,false,sizeof(vis));
for(i=1;i<=n;i++)
dis[i]=Map[1][i];
vis[1]=true;
dis[1]=0;
int ma,po,s=0;
for(i=1;i<n;i++)
{
ma=0;
po=-1;
for(j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]>ma)
{
ma=dis[j];
po=j;
}
}
if(po==-1)
return -1;
s+=ma;
vis[po]=true;
for(j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]<Map[po][j])
dis[j]=Map[po][j];
}
}
return s;
}
int main()
{
int m,i,j,k;
int a,b,c;
while(~scanf("%d%d",&n,&m))
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
Map[i][j]=0;
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
if(Map[a][b]<c)
Map[a][b]=Map[b][a]=c;
}
cout<<prim()<<endl;
}
return 0;
}
思路:就是和最小生成树相似,Map数组初始化为0,并且在建立生成树的时候要选去最大的边进入集合。
#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
#define inf 0x3f3f3f3f
using namespace std;
int n;
int Map[1010][1010],dis[1010];
bool vis[1010];
int prim()
{
int i,j;
memset(vis,false,sizeof(vis));
for(i=1;i<=n;i++)
dis[i]=Map[1][i];
vis[1]=true;
dis[1]=0;
int ma,po,s=0;
for(i=1;i<n;i++)
{
ma=0;
po=-1;
for(j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]>ma)
{
ma=dis[j];
po=j;
}
}
if(po==-1)
return -1;
s+=ma;
vis[po]=true;
for(j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]<Map[po][j])
dis[j]=Map[po][j];
}
}
return s;
}
int main()
{
int m,i,j,k;
int a,b,c;
while(~scanf("%d%d",&n,&m))
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
Map[i][j]=0;
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
if(Map[a][b]<c)
Map[a][b]=Map[b][a]=c;
}
cout<<prim()<<endl;
}
return 0;
}
相关文章推荐
- 详解图的应用(最小生成树、拓扑排序、关键路径、最短路径)
- 最小生成树算法之Prim算法
- 使用C语言实现最小生成树求解的简单方法
- 最小生成树算法——Prim和Kruskal算法的实现
- Data Structure - Week 15
- poj 2485 Highways
- HDU1301 最小生成树kruskal裸题
- Kruskal 最小生成树
- 最小生成树
- 图的最小生成树学习笔记
- 克如斯卡尔算法--最小生成树
- 普里姆算法--最小生成树
- HDU-1233 还是畅通工程(最小生成树&并查集)
- 最小生成树之prim算法
- 最小生成树 : Kruskal 算法
- 最小生成树 : Prim 算法
- java数据结构 最小生成树
- POJ1251-Jungle Roads
- POJ1287-Networking
- 最小生成树——HDOJ 1863 畅通工程 解题报告