您的位置:首页 > 其它

poj2485 highways 之prim解法

2017-10-03 11:40 549 查看
分析:prim模板题,直接水过

/*
* Filename:    code.cpp
* Created:     2017-10-03
* Author:        wyl6
*[mail:17744454343@163.com]
* Desciption:  Desciption
*/
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <stack>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <vector>
#include <bitset>
#include <list>
#include <sstream>
#include <set>
#include <functional>
using namespace std;

#define INF 0x3f3f3f3f
#define MAX 100
typedef long long ll;
int n,v;
int cost[505][505];
bool used[505];
int mincost[505];

void prim()
{
for (int i = 0; i < v; i += 1){
used[i] = false;
mincost[i] = INF;
}
mincost[0] = 0;
int ans = 0;

while (1){
int s = -1;
for (int i = 0; i < v; i += 1)
if (!used[i] && (s == -1|| mincost[i] < mincost[s]))
s = i;

if(s == -1) break;
ans = max(ans,mincost[s]);
used[s] = true;

for (int i = 0; i < v; i += 1)
mincost[i] = min(mincost[i],cost[s][i]);
}
cout << ans << endl;
}

int main(int argc, char const* argv[])
{
cin >> n;
while (n--){
cin >> v;
for (int i = 0; i < v; i += 1)
for (int j = 0; j < v; j += 1)
cin >> cost[i][j];
prim();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息