3362 数据结构实验之图论六:村村通公路
2016-11-25 20:56
190 查看
数据结构实验之图论六:村村通公路
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; #define inf 999999999 int mp[1024][1024]; int vis[1024]; int dist[1024]; int n,m; void prime() { int minn; int i,j,v; int sum=0; for(i=1;i<=n;i++) dist[i]=mp[1][i];//初始化权值 vis[1]=1; for(i=2;i<=n;i++)//找生成树集合点相连的最小权值的边 { minn=inf; v=-1; for(j=1;j<=n;j++) { if(dist[j]<minn&&!vis[j])//如果没有走过这个点并且有这条边小于最小值 { minn=dist[j]; v=j; } } if(v!=-1) { sum=sum+dist[v];//增加权值 vis[v]=1;//加入最小生成树集合 for(j=1;j<=n;j++)//在最小生成树种加入一个点,就要和这个集合之外的店比较,不断的找最小的那一条边 { if(!vis[j]&&mp[v][j]<dist[j]) dist[j]=mp[v][j]; } } } for(i=1;i<=n;i++) { if(!vis[i]) { b2eb sum=-1; break; } } cout<<sum<<endl; } int main() { int u,v,w,i,j; while(cin>>n>>m) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j) mp[i][j]=mp[j][i]=0; else mp[i][j]=mp[j][i]=inf;//初始化图 } memset(vis,0,sizeof(vis)); for(i=0;i<m;i++) { cin>>u>>v>>w; mp[u][v]=mp[v][u]=w; } prime(); } }
相关文章推荐
- SDUT OJ 3362 数据结构实验之图论六:村村通公路
- SDUT 3362 数据结构实验之图论六:村村通公路
- SDUT_3362_数据结构实验之图论六:村村通公路
- 3362-数据结构实验之图论六:村村通公路
- sdutoj 3362 数据结构实验之图论六:村村通公路(最小生成树(裸的))
- SDUT-3362 数据结构实验之图论六:村村通公路
- (模板题)sdut 3362 数据结构实验之图论六:村村通公路(prim求最小生成树)
- 3362-数据结构实验之图论六:村村通公路
- SDUT 3362-数据结构实验之图论六:村村通公路(最小生成树_prim)
- SDUT-3362 数据结构实验之图论六:村村通公路
- SDUT 3362 数据结构实验之图论六:村村通公路(并查集)
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路
- 暑假集训 8.18 数据结构实验之图论六:村村通公路 (最小生成树)
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路(最小生成树prim算法)
- 数据结构实验之图论六:村村通公路
- (kruskal最小生成树)数据结构实验之图论六:村村通公路
- 数据结构实验之图论六:村村通公路 sdut oj (3362)