百度之星1002 度度熊的王國戰略
阿新 • • 發佈:2017-08-06
超級 class mes 力量 can nbsp 是把 關系 cout
Problem Description
可能出題率低在這裏吧。其他是真的沒有什麽坑。代碼也超級簡單。
度度熊國王率領著喵哈哈族的勇士,準備進攻嘩啦啦族。
嘩啦啦族是一個強悍的民族,裏面有充滿智慧的謀士,擁有無窮力量的戰士。
所以這一場戰爭,將會十分艱難。
為了更好的進攻嘩啦啦族,度度熊決定首先應該從內部瓦解嘩啦啦族。
第一步就是應該使得嘩啦啦族內部不能同心齊力,需要內部有間隙。
嘩啦啦族一共有n個將領,他們一共有m個強關系,摧毀每一個強關系都需要一定的代價。
現在度度熊命令你需要摧毀一些強關系,使得內部的將領,不能通過這些強關系,連成一個完整的連通塊,以保證戰爭的順利進行。
請問最少應該付出多少的代價。
Input本題包含若幹組測試數據。
第一行兩個整數n,m,表示有n個將領,m個關系。
接下來m行,每行三個整數u,v,w。表示u將領和v將領之間存在一個強關系,摧毀這個強關系需要代價w
數據範圍:
2<=n<=3000
1<=m<=100000
1<=u,v<=n
1<=w<=1000
Output對於每組測試數據,輸出最小需要的代價。
Sample
Sample Input 2 1 1 2 1 3 3 1 2 5 1 2 4 2 3 3 Sample Output 1 3
題意:
給出一個圖,破壞圖中的某些邊,將一個點分離出去。破壞每條邊的代價是與這個點相連的邊的權值和,問要將此圖中的任意一點分離出去,最小代價是多少。(語言表達有點問題,湊合看吧)
思路:
這才是真正的簽到題,不過出題率有點低,估計很多dalao們直接去做DP,做完之後就沒看別的,然後後面的看到DP出題率最高,出題數也最多就直接去搞DP了,然後都忽略了這個大水題。 明確題意之後就特別簡單了,直接定義一個數組記錄與每個點相連的邊的權值和,然後遍歷找最小就行了。 我猜坑點在是重邊情況,如果是有重邊的話,必須兩條邊都破壞才能分離出這個點,所以重邊是需要重復計算的。還有可能就是對題意理解不太明確,要求是一個點孤立,並不是將圖分成兩個部分。比如1和2之間權值是10,2和3之間權值是5,3和4之間權值是10,那麽最小代價應該是10,將第一個點或者最後一個點分離出去,並不是把2和3之間那條邊破壞。代碼:
#include <iostream> #include <algorithm> #include <cstdio> #include <string.h> using namespace std; int main() { int m,n; int sum[10000]; while(~scanf("%d%d",&n,&m)) { memset(sum,0,sizeof(sum)); for(int i=1; i<=m; i++) { int a,b,c; cin>>a>>b>>c; if(a==b) continue; sum[a]+=c,sum[b]+=c; } sort(sum+1, sum+n+1); cout<<sum[1]<<endl; } return 0; }
百度之星1002 度度熊的王國戰略