【HDU - 6081】度度熊的王国战略(SW算法,全局最小割)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【HDU - 6081】度度熊的王国战略(SW算法,全局最小割)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                題干:
| Problem Description 度度熊國王率領著喵哈哈族的勇士,準備進攻嘩啦啦族。 ?? Input 本題包含若干組測試數據。 ?? Output 對于每組測試數據,輸出最小需要的代價。 ?? Sample Input? 2 1 1 2 1 3 3 1 2 5 1 2 4 2 3 3 ?? Sample Output? 1 3 ?? Source 2017"百度之星"程序設計大賽 - 資格賽 ? | 
題目大意:
求全局最小割
解題報告:
求全局最小割
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define F first #define S second #define ll long long #define pb push_back #define pm make_pair using namespace std; typedef pair<int,int> PII; const int MAX = 3e3 + 5; const int INF = 0x3f3f3f3f; int G[MAX][MAX]; int dis[MAX],id[MAX]; bool vis[MAX]; int n,m; int SW(int n) {int res = INF;for(int i = 0; i<n; i++) id[i]=i;while(n>1) {memset(dis,0,sizeof dis);int k = 0;for(int i = 1; i<n; i++) {swap(id[k],id[i-1]);for(int j = k = i; j<n; j++) {dis[id[j]] += G[id[i-1]][id[j]];if(dis[id[j]] > dis[id[k]]) k = j;}}res = min(res,dis[id[k]]);int s = id[n-2],t=id[n-1];for(int i = 0; i<n-2; i++) {int u = id[i];G[u][s]=G[s][u]+=G[u][t];}id[k]=id[n--];}return res; } int main() {while(~scanf("%d%d",&n,&m)) {for(int i = 0; i<=n; i++)for(int j = 0; j<=n; j++)G[i][j]=0;for(int u,v,w,i = 1; i<=m; i++) {scanf("%d%d%d",&u,&v,&w);u--,v--;G[u][v]+=w;G[v][u]+=w;}printf("%d\n",SW(n));} return 0 ; }?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【HDU - 6081】度度熊的王国战略(SW算法,全局最小割)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 世界首个原子级量子集成电路诞生:解开63
- 下一篇: 小屏旗舰三星Galaxy S22喜提An
