hdu3018 Ant Trip 尤拉迴路

2022-05-28 01:24:07 字數 850 閱讀 9376

題意是幾筆可以畫完所給的圖,其中沒有與其他點連同的不需要考慮。

先用並查集將點分成不同的集合,由於題目是問幾筆,所以不用考慮連通性。只需要考慮不同集合根節點中記錄的這個集合奇度節點的個數,如果是零,最後答案加一,反之加上除二後的結果。

#include

#include

#include

using

namespace

std;

const

int n=150000+5;

int n,m,p[n],ans,in[n],odd[n],even[n];

int find(int x)

void union(int a,int b)

int main()

for(i=0;iscanf("%d%d",&u,&v);

u--;

v--;

union(u,v);

in[u]++;

in[v]++;

}for(i=0;iint f=find(i);

if(in[i]==0) continue;

if(in[i]%2==0) even[f]++;

else odd[f]++;

}ans=0;

for(i=0;iif(p[i]!=i||!in) continue;

if(odd[i]==0&&even[i]==0) continue;

else

if(odd[i]==0) ans++;

else ans+=odd[i]/2;

}printf("%d\n",ans);

}return

0;}

尤拉路徑 hdu 3018 Ant Trip

給定乙個無向圖,每條邊只走一次,可以有多個出發點,最多要多少個出發點?不考慮孤立點 即找至少需要多少個尤拉路徑 首先判斷聯通分量。再在每個連通分量中,奇數度點個數為0,需要出發點1個 尤拉迴路 奇數度點位非0個 記為cnt 需要出發點cnt 2個 乙個連通圖 無向圖 中,奇數度點的個數為偶數個。證明...

HDU 3018 Ant Trip 尤拉迴路

一筆畫問題,問需要多少筆才能把邊畫完,如果乙個連通分量是尤拉迴路 所有點的度數都是偶數,對於無向圖來說 那麼這個連通分量可以一筆畫完,如果乙個連通分量不是尤拉迴路,那麼需要的筆畫數是這個連通分量中奇數度數點的個數除以2。孤立點不連邊,顯然不考慮。include include include inc...

HDU 3018 AntTrip 尤拉迴路

題目連線 vjandhdu 給乙個無向圖,一條路只能走一次,問幾次能盡可能走完全圖 也就是一筆畫,問幾筆畫完全圖 不存在單獨存在 n 個節點的情況 公式 連線一張圖連線需要的筆數 奇數度節點個數 2 尤拉迴路 include using namespace std define rg registe...