poj 2942 奇圈 點雙聯通分量

2021-06-21 11:10:04 字數 1024 閱讀 8600

/***昨天開了一段時間然後不會。。。今天又看了一上午,雖然不是很徹底,但是最終好事搞定了

真是感覺到心力憔悴。。。。。。。

奇圈:邊數為奇數的圈

定理:二分圖中不存在奇圈;

***/

#include#include#includeusing namespace std;

const int m = 1008;

int low[m],t,dfs[m],instack[m],odd[m],index,bet,cn,stack[m];

int a[m],tmp,number[m],top,color[m],map[m][m];

structh[m];

structe[m*m*2];

void add(int u,int v)

void init()

bool co_cycle ( int u, int clr ) //判斷是否存在奇圈

}return false;

}void tarjan(int u,int fa)

while(t!=v);

}a[++tmp] = u;

memset(color,0,sizeof(color));

if(tmp>=3 && co_cycle(u,1))

else tmp = 0;

}else

if(instack[v])

low[u] = min(low[u],dfs[v]);

}}int main()

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

for(int j=i+1;j<=n;j++)if(!map[i][j])

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

if(!dfs[i]) tarjan(i,-1);

int ans = 0;

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

if(!odd[i])ans++;

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

}}

poj 2942 點雙聯通

題意 亞瑟王要在圓桌上召開騎士會議,為了不引發騎士之間的衝突,並且能夠讓會議的議題有令人滿意的結果,每次開會前都必須對出席會議的騎士有如下要求 1 相互憎恨的兩個騎士不能坐在直接相鄰的2個位置 2 出席會議的騎士數必須是奇數,這是為了讓投票表決議題時都能有結果。如果出現有某些騎士無法出席所有會議 例...

Poj 3177 雙聯通分量

題目大意 分析題解 個人 相關鏈結 啟發總結 特別是第四個!以前我了解了low的定義,但是卻沒有發現這個區別 我們平時使用的low,都是其子孫通過 一條返祖邊直接到達的點來決定的。如果我們把這個限制取消掉,按照其提供的做法,可以很簡單的對雙聯通分量進行染色。poj3177 求新增多少條邊可變連通圖。...

POJ 2942 點雙連通

自己試著敲試試 莫名奇妙的過了,我還是要好好研究原理。點雙聯通 每個點與其他點都至少有兩條路徑。include include include include include include include define maxn 1020 define maxm 1000010 using nam...