POJ2377 Bad Cowtractors 最小生成树
来源:互联网 发布:中国为什么封闭网络 编辑:程序博客网 时间:2024/05/17 06:27
题目大意是Bessie被雇佣去搭建一个廉价的网络,给定每条路线间需要的费用,但是他发现雇主想要花费最少的钱去搭建这样的网络,甚至不想付给他报酬。于是
Bessie就打算建造一个最贵的网络(任意两节点都可以互相达到,但是不存在回路)。计算出最多需要花费多少钱。
这题就是个明显的最小生成树问题,只不过求的是最大费用,所以修改下算法就完全可以。这里用的是Prim算法求的最小生成树。
#ifndef HEAD#include <stdio.h>#include <vector>#include <math.h>#include <string.h>#include <string>#include <iostream>#include <queue>#include <list>#include <algorithm>#include <stack>#include <map>using namespace std;#endif // !HEAD#ifndef QUADMEMSETinline void QuadMemSet(void* dst, int iSize, int value){iSize = iSize / 4;int* newDst = (int*)dst;#ifdef WIN32__asm{mov edi, dstmov ecx, iSizemov eax, valuerep stosd}#elsefor (int i = 0; i < iSize; i++){newDst[i] = value;}#endif}#endifint cost[1001][1001];int prim(int N){int visited[1001] = { 0 };int maxcost[1001];//memset(maxcost, 0, sizeof(maxcost));memset(visited, 0, sizeof(visited));QuadMemSet(maxcost, sizeof(maxcost), -1);for (int i = 1; i <= N;i++){cost[i][i] = 0;}maxcost[1] = 0;int res = 0;while (true){int v = -1;for (int i = 1; i <= N;i++){if (!visited[i] && (v == -1 || maxcost[i] > maxcost[v])){v = i;}}if (v < 0 || maxcost[v] < 0){break;}visited[v] = 1;res += maxcost[v];for (int i = 1; i <= N;i++){maxcost[i] = std::max(maxcost[i], cost[v][i]);}}for (int i = 1; i <= N;i++){if (visited[i] == 0){return -1;}}return res;}int main(){#ifdef _DEBUGfreopen("d:\\in.txt", "r", stdin);#endifint N, M;QuadMemSet(cost, sizeof(cost), -1);scanf("%d %d\n", &N, &M);for (int i = 0; i < M;i++){int a, b, c;scanf("%d %d %d\n", &a, &b, &c);cost[a][b] = std::max(c, cost[a][b]);cost[b][a] = std::max(c, cost[b][a]);}printf("%d\n", prim(N));return 0;}
0 0
- POJ2377 Bad Cowtractors 最小生成树
- poj2377 Bad Cowtractors(最小生成树)
- POJ2377 Bad Cowtractors 【最大生成树】
- POJ2377 Bad Cowtractors(最大生成树)
- poj2377 Bad Cowtractors (最大生成树)
- poj2377 -- Bad Cowtractors(最大生成树)
- POJ2377 Bad Cowtractors【Kruskal】【求最大生成树】
- poj2377 - Bad Cowtractors
- POJ2377--Bad Cowtractors
- POJ2377 Bad Cowtractors
- POJ2377-Bad Cowtractors
- POJ2377 Bad Cowtractors
- poj 2377 Bad Cowtractors(最小生成树)
- POJ 2377 - Bad Cowtractors(最小生成树)
- poj2377 Bad Cowtractors(最大生成树的Prim和Kruskal做法)
- poj2377 最小生成树
- 北大ACM2377——Bad Cowtractors~~最小生成树
- 【POJ】-2377-Bad Cowtractors(最小生成树)
- 关于DSP C6727外部中断的用法
- Codeforces 3A Shortest Path of the King
- Windows 下正则表达式库 re2 在 C++ 和 Python 中的编译和使用
- swift菜鸟入门视频教程-11-方法
- Lua学习笔记(三)——协同程序
- POJ2377 Bad Cowtractors 最小生成树
- unity3D游戏开发实战原创视频讲座系列12之U3D的2D开发新方法实战
- 学习笔记 Android.mk 自动搜索
- Codeforces 5A
- Solr4.7.2启动时的Index locked for write for core问题分析
- MFC中Spin control的使用
- leetcode Evaluate Reverse Polish Notation(*)
- Codeforces 6A
- 如何优雅的ML(四) Logistic 回归