POJ2421 最小生成树/MST(prim)
2011-07-30 10:26
316 查看
题意:
给出各个村的距离,并给出已经部分有路连通的两个村,求加最少的路的让各个连通。
思路:
让连通的边的权值设为零,然后求最小生成树即可。
给出各个村的距离,并给出已经部分有路连通的两个村,求加最少的路的让各个连通。
思路:
让连通的边的权值设为零,然后求最小生成树即可。
#include <iostream> #include <cstdio> #include <queue> #include <cstring> using namespace std; const int MAXN=110; const int INF=100000000; int dist[MAXN]; struct cedge { int to; int w; cedge(int _to=0,double _w=INF) { to=_to; w=_w; } }edge; bool operator<(const cedge &e1,const cedge &e2) { return e1.w>e2.w; } int MST(int n,int map[][110]) { int ans; int sum=n; int i; int visit[110]; ans=0; priority_queue<cedge> qu; memset(visit,0,sizeof(visit)); qu.push(cedge(1,0)); memset(dist,127,sizeof(dist)); cedge current; while(sum--) { do { current=qu.top(); qu.pop(); // cout<<current.to<<" "<<current.w<<endl; }while(visit[current.to]==true&&!qu.empty()); visit[current.to]=true; ans+=current.w; for(i=0;i<n;i++) { if(visit[i+1]==false) { if(map[current.to-1][i]<dist[i+1]) { dist[i+1]=map[current.to-1][i]; // cout<<"dist: "<<i+1<<" "<<dist[i+1]<<endl; qu.push(cedge(i+1,dist[i+1])); } } } } return ans; } int main() { int map[110][110]; int n; int t; int i,j; int from; int to; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&map[i][j]); } } scanf("%d",&t); for(i=0;i<t;i++) { scanf("%d %d",&from,&to); from--; to--; map[from][to]=0; map[to][from]=0; } int ans=MST(n,map); printf("%d\n",ans); } return 0; }
相关文章推荐
- ZQUOJ1335最小生成树(MST)之Prim
- POJ2421 Constructing Roads [最小生成树 prim]
- 超详细最小生成树 prim 普里姆算法 poj1258 Agri-Net 最小生成树基础题 MST
- 最小生成树MST -- Prim 算法实现
- 数据结构与算法分析(Java语言描述)(31)—— 使用 Prim 算法求有权图的最小生成树(MST)
- java实现图的最小生成树(MST)的普利姆(Prim)算法
- NYOJ38布线问题 prim 最小生成树MST
- POJ 1679 The Unique MST (prim判断最小生成树是否唯一)
- 【POJ2421】【最小生成树水题】【prim】
- 数据结构基础6.3:最小生成树MST(Prim、Kruskal)
- 最小生成树MST——Prim实现
- 算法整理:最小生成树(mst)-Prim+Kruskal
- [POJ2421]最小生成树+PRIM+KRUSKAL
- 算法导论 最小生成树 MST-PRIM
- 最小生成树(MST)----普里姆(Prim)算法与克鲁斯卡尔(Kruskal)算法
- Prim && Kruskal 生成MST(最小生成树)及最短路径问题
- poj 题目1679 The Unique MST (最小生成树,次小生成树 prim)
- POJ 1251 (2013.9.21周赛H题:MST最小生成树prim和kruskal算法)
- 最小生成树-普里姆算法(Prim)
- ZQUOJ1336最小生成树(MST)之Kruskal