pku 2485 Highways 典型最小生成树
2010-08-21 10:34
316 查看
题目连接
http://acm.pku.edu.cn/JudgeOnline/problem?id=2485
典型最小生成树
#include <stdio.h>
#define MAX_V 501
int arc[MAX_V][MAX_V];
int N;
struct CloseEdge{
int adjvex;
int lowcost;
}closedge[MAX_V];
int longest;
void MiniSpanTree_PRIM(int u){
longest = 0;
//初始化辅助数组
int i,j,k;
for(i = 0;i < N;i++)
if(i != u){
closedge[i].adjvex = u;
closedge[i].lowcost = arc[u][i];
}
//初始,U = {u}
closedge[u].lowcost = 0;
//选择其余N - 1个顶点
for(i = 0;i < N - 1;i++){
//求出最小生成树的下一个节点,第k顶点
int MaxCost = 1 << 20;
for(j = 0; j < N;j++)
if(closedge[j].lowcost != 0 && MaxCost > closedge[j].lowcost)
{
MaxCost = closedge[j].lowcost;
k = j;
}
if(longest < closedge[k].lowcost)
longest = closedge[k].lowcost;
//k顶点加入到U集
closedge[k].lowcost = 0;
//新节点添加到树后,修改closedge数组
for(j = 0;j < N;j++)
if(closedge[j].lowcost > arc[k][j]){
closedge[j].adjvex = k;
closedge[j].lowcost = arc[k][j];
}
}
}
int main(){
//FILE *fp = fopen("data.txt","r");
int test;
//fscanf(fp,"%d",&test);
scanf("%d",&test);
while(test--){
//fscanf(fp,"%d",&N);
scanf("%d",&N);
for(int i = 0;i < N;i++)
for(int j = 0;j < N;j++)
//fscanf(fp,"%d",&arc[i][j]);
scanf("%d",&arc[i][j]);
MiniSpanTree_PRIM(0);
printf("%d/n",longest);
}
return 0;
}
http://acm.pku.edu.cn/JudgeOnline/problem?id=2485
典型最小生成树
#include <stdio.h>
#define MAX_V 501
int arc[MAX_V][MAX_V];
int N;
struct CloseEdge{
int adjvex;
int lowcost;
}closedge[MAX_V];
int longest;
void MiniSpanTree_PRIM(int u){
longest = 0;
//初始化辅助数组
int i,j,k;
for(i = 0;i < N;i++)
if(i != u){
closedge[i].adjvex = u;
closedge[i].lowcost = arc[u][i];
}
//初始,U = {u}
closedge[u].lowcost = 0;
//选择其余N - 1个顶点
for(i = 0;i < N - 1;i++){
//求出最小生成树的下一个节点,第k顶点
int MaxCost = 1 << 20;
for(j = 0; j < N;j++)
if(closedge[j].lowcost != 0 && MaxCost > closedge[j].lowcost)
{
MaxCost = closedge[j].lowcost;
k = j;
}
if(longest < closedge[k].lowcost)
longest = closedge[k].lowcost;
//k顶点加入到U集
closedge[k].lowcost = 0;
//新节点添加到树后,修改closedge数组
for(j = 0;j < N;j++)
if(closedge[j].lowcost > arc[k][j]){
closedge[j].adjvex = k;
closedge[j].lowcost = arc[k][j];
}
}
}
int main(){
//FILE *fp = fopen("data.txt","r");
int test;
//fscanf(fp,"%d",&test);
scanf("%d",&test);
while(test--){
//fscanf(fp,"%d",&N);
scanf("%d",&N);
for(int i = 0;i < N;i++)
for(int j = 0;j < N;j++)
//fscanf(fp,"%d",&arc[i][j]);
scanf("%d",&arc[i][j]);
MiniSpanTree_PRIM(0);
printf("%d/n",longest);
}
return 0;
}
相关文章推荐
- POJ 2485:Highways:典型prim最小生成树(2)
- POJ 2485 Highways(最小生成树)
- 文章标题 POJ 2485 : Highways(最小生成树--kruskal+并查集)
- POJ 2485 Highways 最小生成树
- POJ2485 Highways (最小生成树)
- POJ 2485-Highways 最小生成树Prim算法
- POJ 2485 Highways 【最小生成树Prim】
- poj_2485_Highways(最小生成树)
- POJ 2485 Highways(最小生成树 Prim)
- POJ 2485 Highways【最小生成树】
- POJ 题目2485 Highways(最小生成树最大边)
- POJ 2485 Highways(prim 最小生成树)
- POJ 2485 Highways【最小生成树最大权——简单模板】
- POJ 2485 Highways【最小生成树】
- POJ 2485 Highways (最小生成树prim)
- POJ 2485 Highways【最小生成树最大权——简单模板】
- POJ2485——Highways(最小生成树)
- POJ2485 Highways(最小生成树)
- poj 2485 Highways prim最小生成树
- 求最小生成树的最大边——PKU2485