poj 1258 简单的prim算法运用
来源:互联网 发布:ug编程入门 编辑:程序博客网 时间:2024/05/07 16:47
题意:村长有一个农田接了高速网络 , 他想把网络通过接到其他农田 , 下面给出n个农田 , 每个农田到其他农田的距离 ,要求所需网线的最短距离 ?
很明显这是一个简单的最小生成树问题:
代码:
#include
#include
#include
using namespace std;
#define maxn 1000000
int grap[110][110];
int n;
int prim()
{
int i , j ,p[110];
intpre[100];
memset(pre ,0 , sizeof(pre));
pre[0] =1;
for(i = 0; i< n; i++)
p[i] =maxn;
int x = 0 ,sum = 0;
for(j = 0; j< n-1; j++)
{
int y = x ;
int maxx =maxn;
for(i = 0; i< n; i++) //对于更新每个点的最小值 , 和找所有点之间的最小值 , 可以写在同一个for循环中
{
if(!pre[i]&& grap[y][i] < p[i])
p[i] =grap[y][i];
if(!pre[i]&& p[i] < maxx)
{
maxx =p[i];
x = i;
}
}
pre[x] =1;
sum +=maxx;
}
returnsum;
}
int main()
{
while(scanf("%d" , &n) != EOF)
{
int i ,j;
for(i = 0; i< n; i++)
for(j = 0; j< n; j++)
scanf("%d" ,&grap[i][j]);
cout<<prim()<<endl;
}
return0;
}
很明显这是一个简单的最小生成树问题:
代码:
#include
#include
#include
using namespace std;
#define maxn 1000000
int grap[110][110];
int n;
int prim()
{
}
int main()
{
}
0 0
- poj 1258 简单的prim算法运用
- poj 2031 简单的kruskal算法运用
- poj 3268 简单的SPFA算法运用
- poj 2387 简单的dijkstra运用
- poj 1258 Agri-Net(prim)
- poj 1789 Truck History (prim)
- poj 2485 highways(prim)
- poj 1135 有点弯的最短路运用
- poj 3522 MST性质的运用
- poj 2195 最优匹配算法的优化
- POJ 2739 Sum of Consecutive Prim…
- poj 2485 简单的最小生…
- poj 1125 简单的floyd应…
- poj 1300 简单的欧拉图…
- poj 1658 简单的Havel-H…
- poj 3207 简单的2-SAT问题
- poj 2570 floyd算法+二进制的应用
- poj 2186 tarjan算法
- poj 1733 并查集+偏移向…
- hdu1728 很有难度的bfs…
- hdu 1026 简单的bfs
- poj 1465 一题非常经典的bfs题
- poj 2031 简单的kruskal算法运用
- poj 1258 简单的prim算法运用
- poj 1079 判断最…
- poj 1135 有点弯的最短路运用
- poj 2387 简单的dijkstra运用
- poj 3268 简单的SPFA算法运用
- poj 1125 简单的floyd应…
- poj 2253 dijkstra
- poj 2449 求第k最短路 A* + SPFA
- poj 3249 DAG上的最短路问题