/***昨天開了一段時間然後不會。。。今天又看了一上午,雖然不是很徹底,但是最終好事搞定了
真是感覺到心力憔悴。。。。。。。
奇圈:邊數為奇數的圈
定理:二分圖中不存在奇圈;
***/
#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...