題意:有乙個教室群,教室之間有空調管相連(原圖連通),每個教室都有人,求斷開一條空調管使之分開成兩個教室群,並且使兩個教師群的人數差值最小。
思路:這題沒什麼難度吧。。思路都很明了(可能是看過標籤的緣故吧0.0),求邊雙連通分量,縮點,然後進行樹形dp計數求出答案即可,貼個**,以後拿來當模板用吧。
#include #include #include #include #include #include #define pb push_back
#define sz(x) ((int)(x).size())
using namespace std;
const int n = 10010;
int n, m, head[n], cnt, w[n], dp[n];
struct edgeedge[n * 4];
void addedge(int a, int b, int idx)
struct tarjan
void dfs(int to, int ed) else
low[to] = min(low[to], dfn[e]);
}if(dfn[to] == low[to])while(e != to);}}
}g;struct dp
void dfs(int to)
}}ng;
void solve()
for(int i = 0;i < n;i++)}}
ng.dfs(1);
printf("%d\n", ng.res);
return ;
}int main()
for(i = 0;i < m;i++)
solve();
}return 0;
}
hdu 2242 考研路茫茫 空調教室
題意 給乙個雙聯通圖 有重邊 每乙個節點有權值,現在要求把以一條邊去掉,使得這個圖分為兩個部分,而且要使得這兩個部分的權的差的絕對值最小 思路 1,邊 雙連通求縮點,得到一顆樹 2,簡單樹形dp 這題難倒我好久,首先是各種hash使得mle,然後就是陣列開小了,沒有注意m的值有2w 最重大錯誤就在於...
HDU 2242 考研路茫茫 空調教室
眾所周知,hdu的考研教室是沒有空調的,於是就苦了不少不去圖書館的考研仔們。lele也是其中乙個。而某教室旁邊又擺著兩個未裝上的空調,更是引起人們無限yy。乙個炎熱的下午,lele照例在教室睡覺的時候,竟然做起了空調教室的美夢。lele夢到學校某天終於大發慈悲給某個教室安上了乙個空調。而且建造了了m...
HDU 2242 考研路茫茫 空調教室
hdu 2242 這個題目首先可以求出邊雙連通分量並進行縮點,如果邊雙連通分量的個數只有乙個的話就必然無解,之後我們把縮好的點建成乙個新圖,這個圖實際上就是一棵樹。如果我們隨便找個點當做樹根,並把圖畫成樹形結構的話,就會發現實際上我們只要求出除樹根外每個節點以及其下方的所有節點的權值和即可,每求出乙...