HNACM 八 D 引水工程

2021-07-11 01:50:35 字數 1336 閱讀 2636

傳送門

最小生成樹演算法

首先找到乙個自建水庫最少費用的 然後以此為根本 找到與之相關的邊

還要注意當權值相等時的處理方法

#include 

#define n 310

#define ll long long

#define max 11111

using

namespace

std;

int n, w[n], p[n][n], water[n];

//w[n]是 每個地方自建水庫所需的費用

//water[n]是存放已經解決用水問題的地方

bool vis[n];

int prim(int pos, int sum)else

if (mindist == p[water[i]][j] && min1 > w[j])}}

}vis[u] = true;

water[cur++] = u;

sum += min(min1, mindist);//去自建費用和從其他地方引水的費用的較小者

}return sum;

}int main()

}for (i = 0; i < n; i++)

}printf("%d\n", prim(pos, min));//先從自建水庫最小的地方開始

}return

0;}

另一種方法,把自建費用當成結點0到結點i的費用,然後用最下生成樹演算法

感謝@dart 提供思路

#include 

#include

#define maxn 310

using

namespace

std;

int g[maxn][maxn], dis[maxn];

bool vis[maxn];

const

int inf = 0x3f3f3f3f;

int n;

int prim(int st)

dis[st] = 0;

vis[st] = true;

int sum = 0;

for (i = 1; i <= n; i++)

}vis[v] = true;

sum += min;

for (j = 0; j <= n; j++)}}

return sum;

}int main()

for (i = 1; i <= n; i++)

}printf("%d\n", prim(0));

}return

0;}

zzuoj 10409 10409 D 引水工程

time limit 2 sec memory limit 128 mb submit 96 solved 34 submit status web board 南水北調工程是優化水資源配置 促進區域協調發展的基礎性工程,是新中國成立以來投資額最大 涉及面最廣的戰略性工程,事關中華民族長遠發展。南水...

NYOJ 1239 引水工程

acm模版 這個題用最小生成樹的兩個經典演算法都可以過,用 prim 演算法相對容易寫,只要再不斷擴充套件的過程中判定究竟是建站消耗高還是建管道高,如果用 kruskal 演算法的話,則需要在生成最小樹的過程中存樹,然後 dfs 一遍做和前者同樣的判定即可。我用的是第二種,但是其實 kruskal ...

河南省第八屆ACM省賽 引水工程

時間限制 2000 ms 記憶體限制 65535 kb 難度 3 描述南水北調工程是優化水資源配置 促進區域協調發展的基礎性工程,是新中國成立以來投資額最大 涉及面最廣的戰略性工程,事關中華民族長遠發展。南水北調工程 旨在緩解中國華北和西北地區水資源短缺的國家戰略性工程。就是把中國長江流域豐盈的水資...