poj 2377 Bad Cowtractors(最大生成树)
2014-07-05 14:22
471 查看
题意是求一个树的最大生成树,若不能生成树,则输出-1。
代码:
代码:
#include <stdio.h> const int maxn = 1001; const int inf = 0x3f3f3f3f; int g[maxn][maxn]; int n, m; int prim() { bool vis[maxn]; int dis[maxn]; int res = 0; for (int i = 1; i <= n; i++) { dis[i] = -inf; vis[i] = false; } dis[1] = 0; vis[1] = true; int mark = 1; for (int i = 1; i < n; i++) { for (int j = 1; j <= n; j++) { if (!vis[j] && dis[j] < g[mark][j]) dis[j] = g[mark][j]; } int maxdis = -1; for (int j = 1; j <= n; j++) { if (!vis[j] && maxdis < dis[j]) { maxdis = dis[j]; mark = j; } } if (maxdis <= 0) return -1;//debug vis[mark] = true; res += maxdis; } return res; } int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); #endif // LOCAL while (scanf("%d%d", &n, &m) == 2) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (i == j) g[i][j] = 0; else g[i][j] = -inf; } } for (int i = 0; i < m; i++) { int from, to, c; scanf("%d%d%d", &from, &to, &c); if (g[from][to] < c)//debug g[from][to] = g[to][from] = c; } int ans = prim(); printf("%d\n", ans); } return 0; }
相关文章推荐
- POJ 2377 Bad Cowtractors(kruskal最大生成树)
- POJ 2377 Bad Cowtractors(最大生成树)
- POJ 2377 Bad Cowtractors【最大生成树,Prime算法】
- POJ 题目2377 Bad Cowtractors(最大生成树)
- poj 2377 Bad Cowtractors(最大生成树)
- POJ - 2377 Bad Cowtractors(最大生成树)
- POJ 2377 Bad Cowtractors(最大生成树)
- POJ - 2377 Bad Cowtractors(图论/最大生成树)
- POJ 2377 Bad Cowtractors(最大生成树,2016河南多校大一训练赛)
- Bad Cowtractors POJ - 2377(最大生成树)
- poj 2377 Bad Cowtractors(最大生成树!)
- POJ 2377 Bad Cowtractors(最大生成树)
- POJ - 2377 Bad Cowtractors (最大生成树,Kruskal)
- POJ 2377 Bad Cowtractors(裸的最大生成树)
- POJ 1258 Agri-Net(最小生成树) && POJ 2377 Bad Cowtractors(最大生成树)
- POJ 2377 - Bad Cowtractors(最大生成树)
- POJ 2377 Bad Cowtractors【最大生成树】
- POJ 2377 Bad Cowtractors (最大生成树)
- poj - 2377 Bad Cowtractors&&poj 2395 Out of Hay(最大生成树)
- 【POJ】2377 - Bad Cowtractors(最大生成树)