bzoj 3706 反色刷 一筆畫

2021-07-07 05:34:05 字數 874 閱讀 4265

首先,對於乙個連通子圖,如果存在乙個方案把

所有邊都變成白色,這個方案一定可以只經過黑邊。然後對於每乙個子圖,就是小時候玩的一筆畫了。乙個一筆畫存在回到原點的方案當且僅當所有點的度數都是偶數,這樣就可以判定可行性,如果可行,答案就是有黑邊的極大連通子圖個數。

#include

#include

#include

#include

#include

#define md

#define ll long long

#define inf (int) 1e9

#define eps 1e-8

#define n 1000010

using namespace std;

struct yts e[2*n];

int vis[n],pos[n],v[n],sum[n],bl[n];

int tot=0,num=1;

void put(int x,int y,int l)

void dfs(int x)

sum[tot]+=bl[x];

}int main() }

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

if (!vis[i])

int ans,ok,tt;

ans=0; for (int i=1;i<=tot;i++) ans+=sum[i]>0;

ok=0; for (int i=1;i<=n;i++) if (bl[x]&1) ok++;

scanf("%d",&tt);

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

else

}else

}return 0;

}

一筆畫問題

一筆畫問題是在6x6的棋盤上分布著若干點,從紅色起點開始依次不重複地經過每個白色點,已經經過的點可以跨越過去。程式採用深度搜尋,從紅色點開始分別往上 往下 往左和往右邁出第一步,然後沿著當前方向,分別探測左邊 前面和右邊的下一結點,標記已經經過的節點為空。探測到左邊有節點就左轉,然後直行到該節點 如...

一筆畫問題

描述 判斷乙個圖是否能夠用一筆畫下來.規定,所有的邊都只能畫一次,不能重複畫。輸入第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一行有兩個正整數p,q p 1000,q 2000 分別表示這個畫中有多少個頂點和多少條連線。點的編號從1到p 隨後的q行,每行有兩個正整數a,b ...

一筆畫問題

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 zyc從小就比較喜歡玩一些小遊戲,其中就包括畫一筆畫,他想請你幫他寫乙個程式,判斷乙個圖是否能夠用一筆畫下來。規定,所有的邊都只能畫一次,不能重複畫。輸入 第一行只有乙個正整數n n 10 表示測試資料的組數。每組測試資料的第一...