hdu6178Monkeys bfs 輸入掛模板

2021-08-07 09:07:59 字數 870 閱讀 9608

題意:

給你一顆樹,刪除最多的邊,使得k個猴子能落在n個結點上(每個猴子所在的節點周圍至少連著乙個有猴子的節點)

思路:要使得剩下的邊最少,那麼兩個點只配一條邊是最優的,計算出這種邊的最大條數,如果這些邊不夠連線k個猴子,那麼每剩下乙個猴子就要多加一條邊。

所以只要從度數為1的節點開始找,bfs一下就好。

多校的時候認為這個思路沒錯,不管怎麼優化就是瘋狂tle,換了乙個快的但是不一定對的思路,還是t,t到懷疑人生啊。後來結束了才知道有輸入掛這種東西,。。。之前用cin的時候t過,就老老實實的用scanf,,以為scanf已經是最快了,,沒想到還有fread這種快速讀檔案的東西。。

**:

#include using namespace std;

const int maxn = 1e5+7;

vectorarr[maxn];

int pd[maxn],vis[maxn];

struct fastio

inline int xchar()

inline int xint()

~fastio()

}io;

int main()

queueq;

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

int ans = 0;

while(!q.empty())

arr[v].erase(remove(arr[v].begin(),arr[v].end(),now),arr[v].end());

if(arr[v].size()==1)

q.push(v);}}

if(ans*2>=k)

else

}return 0;

}

hdu6178 bfs 輸入輸出掛

這道題是2017的多校第10場的1008.在一棵樹上選取最小的邊集使得有k個節點每個節點都和至少乙個其他節點相連線。了解二分匹配的話,很容易想到最優的情況肯定包含了最大二分匹配。而求一顆樹的最大二分匹配,並不需要什麼演算法,只要從葉子節點暴力 每個節點若它的父親不在點集內則將這條邊加入邊集 就可以,...

hdu1285 hdu4857 拓撲排序

一 原題內容 problem description 有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在...

樹狀陣列 hdu2689 hdu2838

題意 給定乙個正整數n,和乙個1 n的乙個排列,每個數可以和旁邊的兩個數的任意乙個交換,每交換一次總次數就要加一,問將這個排列轉換成乙個遞增的排列需要多少次交換?題意可以轉換成求這個排列的逆序對數。include include include include using namespace std...