2018百度之星(B)degree

2021-08-22 19:16:17 字數 854 閱讀 5388

度度熊最近似乎在研究圖論。給定乙個有 n個點 (vertex) 以及 m條邊 (edge) 的無向簡單圖 (undirected ****** graph),此圖中保證沒有任何圈 (cycle) 存在。

現在你可以對此圖依序進行以下的操作:

移除至多 k條邊。

在保持此圖是沒有圈的無向簡單圖的條件下,自由的新增邊至此圖中。

請問最後此圖中度數 (degree) 最大的點的度數可以多大呢?

input

輸入的第一行有乙個正整數 t,代表接下來有幾筆測試資料。

對於每筆測試資料: 第一行有三個整數 n, m, k。 接下來的 m 行每行有兩個整數 a 及 b,代表點 a 及 b 之間有一條邊。 點的編號由 0 開始至 n−1。

output

對於每一筆測試資料,請依序各自在一行內輸出乙個整數,代表按照規定操作後可能出現的最大度數。

由題意可知這是由許多樹組成的乙個森林,因為樹的點-樹的邊=1,所以此題樹的個數為c=n-m;

由於去掉一條邊就等於把一棵樹分成了兩棵,就等於答案數+1;由於答案最大是n-1,

所以答案為ans=min(n-1,n-m-1+k+頂點中度數最大的值)

#includeusing namespace std;

const int maxn=210000;

int n,m,k,a[maxn];

int main()

int max1=a[0];

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

if(max1max1=a[i];

int ans=min(n-1,n-m+max1-1+k);

cout<}

}

2018 百度之星

資格賽 problem a problem b problem c problem d problem e problem f 初賽 a problem a 簽到題problem b 用deque雙端佇列模擬即可。插入的時候用insert。problem c problem d problem e ...

2018百度之星初賽1003

problem description 度度熊有一張紙條和一把剪刀。紙條上依次寫著 n 個數字,數字只可能是 0 或者 1。度度熊想在紙條上剪 k 刀 每一刀只能剪在數字和數字之間 這樣就形成了 k 1 段。他再把這 k 1 段按一定的順序重新拼起來。不同的剪和接的方案,可能會得到不同的結果。度度熊...

百度之星2018初賽A輪

題目描述 題解 簽到題。排個序列舉小的兩條然後二分出第三條就好了。其實排序之後只要看連續的三條就行了。include define n 1005 using namespace std int n,s n ans int main printf d n ans return 0 題解 當時腦子抽了寫...