HDU 2242 雙聯通加樹形DP

2021-07-02 13:59:49 字數 667 閱讀 2072

//邊雙連通還有縮點重新建圖再dfs一次

//題意:給乙個無向圖連通,圖中每個結點都有乙個權值,問能否割掉圖中的一條邊,使得圖變為2個連通支,

//若能,使2個連通支中權值和的差最小,輸出差的絕對值。n<=10^4

#include#include#include#include#include#include#includeusing namespace std;

int n,m,edgenum,ans,cnt,value[10005],head[10005],color[10005],dfn[10005],low[10005],bch,order,stack[10005],top,sum[10005];

vector< pair>bridge;

bool vis[10005];

struct edge

edge[40005];

void addedge(int a,int b)

void tarjan(int u,int f)

if(low[u]==dfn[u])

}//邊雙連通的建圖。。

void buildt()///color表示所屬的連通分量的標號。

{ edgenum=0;

memset(head,-1,sizeof(head));

for(int i=0;i

hdu 2242 邊雙連通分量)

思路 tarjan求邊雙連通分量,進行縮點後成樹,然後就是樹型dp,求一下最小差值就行了。ps 注意點 由於雙向建邊,dp搜尋時要記錄父親,只能往下搜,不能搜該節點的父親。1 include2 include3 include4 include5 include6 include7 using na...

HDU 2242(考研路茫茫 空調教室)

題意 有乙個教室群,教室之間有空調管相連 原圖連通 每個教室都有人,求斷開一條空調管使之分開成兩個教室群,並且使兩個教師群的人數差值最小。思路 這題沒什麼難度吧。思路都很明了 可能是看過標籤的緣故吧0.0 求邊雙連通分量,縮點,然後進行樹形dp計數求出答案即可,貼個 以後拿來當模板用吧。includ...

hdu 2242 考研路茫茫 空調教室

題意 給乙個雙聯通圖 有重邊 每乙個節點有權值,現在要求把以一條邊去掉,使得這個圖分為兩個部分,而且要使得這兩個部分的權的差的絕對值最小 思路 1,邊 雙連通求縮點,得到一顆樹 2,簡單樹形dp 這題難倒我好久,首先是各種hash使得mle,然後就是陣列開小了,沒有注意m的值有2w 最重大錯誤就在於...