poj2485 Highways(prim java)
2017-08-19 14:03
323 查看
package prim;
import java.util.Scanner;
/**问题请参考http://poj.org/problem?id=2485
* @author rayli
* @date:2014-7-28 下午2:52:24
* 题意 :一个小岛上 要建高速公路,该小岛上有N个村庄,给出 每个村庄到其他村庄的 距离。
* 即 给出一个含有 N个顶点的无向完全联通图,求 该图生成的最小生成树边集中的最大权值;
*
*/
public class Highways
{
static int map[][];//无向图的边
int ans; //最大权值
void prim()
{
ans = -1;
int cost[] = new int[map.length];//cost[j]为temp没加入到生成树集合U前节点j到生成树的最小花费
for(int i=0; i<map.length; i++)
{
cost[i] = map[0][i];
}
for(int i=0; i<map.length-1; i++)
{
int minum = Integer.MAX_VALUE;
int tmp = 0;
for(int j=0; j<map.length; j++)
{
if(cost[j] > 0 && minum > cost[j])
{
minum = cost[j];
tmp = j;
}
}
if(ans < minum)
ans = minum;
cost[tmp] = 0;
for(int j=0; j<map.length; j++)
{
if(map[tmp][j] < cost[j])
{
cost[j] = map[tmp][j];
}
}
}
}
void output()
{
System.out.println(ans);
}
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
//树的个数
int n = cin.nextInt();
for(int i=0; i<n; i++)
{
int m = cin.nextInt();//村庄的个数即定点的个数
map = new int[m][m];
for(int j=0; j<m; j++)
for(int k=0; k<m; k++)
{
map[j][k] = cin.nextInt();
}
Highways hw = new Highways();
hw.prim();
hw.output();
}
cin.close();
}
}
import java.util.Scanner;
/**问题请参考http://poj.org/problem?id=2485
* @author rayli
* @date:2014-7-28 下午2:52:24
* 题意 :一个小岛上 要建高速公路,该小岛上有N个村庄,给出 每个村庄到其他村庄的 距离。
* 即 给出一个含有 N个顶点的无向完全联通图,求 该图生成的最小生成树边集中的最大权值;
*
*/
public class Highways
{
static int map[][];//无向图的边
int ans; //最大权值
void prim()
{
ans = -1;
int cost[] = new int[map.length];//cost[j]为temp没加入到生成树集合U前节点j到生成树的最小花费
for(int i=0; i<map.length; i++)
{
cost[i] = map[0][i];
}
for(int i=0; i<map.length-1; i++)
{
int minum = Integer.MAX_VALUE;
int tmp = 0;
for(int j=0; j<map.length; j++)
{
if(cost[j] > 0 && minum > cost[j])
{
minum = cost[j];
tmp = j;
}
}
if(ans < minum)
ans = minum;
cost[tmp] = 0;
for(int j=0; j<map.length; j++)
{
if(map[tmp][j] < cost[j])
{
cost[j] = map[tmp][j];
}
}
}
}
void output()
{
System.out.println(ans);
}
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
//树的个数
int n = cin.nextInt();
for(int i=0; i<n; i++)
{
int m = cin.nextInt();//村庄的个数即定点的个数
map = new int[m][m];
for(int j=0; j<m; j++)
for(int k=0; k<m; k++)
{
map[j][k] = cin.nextInt();
}
Highways hw = new Highways();
hw.prim();
hw.output();
}
cin.close();
}
}
相关文章推荐
- POJ 2485 Highways(Prim 和 Kruskal)
- poj 2485 Highways prim最小生成树
- poj 2485 Highways(prim求最小生成树)
- POJ2485——Prim——Highways
- POJ 2485 Highways 【最小生成树Prim】
- poj 2485 Highways -----最小生成树。prim
- POJ 2485 Highways(prim 最小生成树)
- poj 2485 Highways (prim)
- poj2485 highways 之prim解法
- POJ 2485 Highways (MST.Prim)
- POJ 2485:Highways:典型prim最小生成树(2)
- POJ 2485 Highways (prim最小生成树)
- POJ 2485 Highways (kruskal+prim)
- POJ 2485:Highways(最小生成树&&prim)
- poj 2485 Highways(kruscal or prim最小生成树)
- POJ 2485 Highways 最小生成树 Kruskal && Prim
- POJ 2485 Highways (prim最小生成树)
- poj 2485 Highways(prim)
- poj 2485 Highways(最小生成树 Prim)
- POJ 2485 Highways(Prim中最大边)