題意:給定m個二元組(a_i, b_i),求x_1, ..., x_n滿足:對於任意(a_i, b_i),有|x_ - x_| = 1成立。
我們發現,如果有解,那麼一定存在一組解只有0,1構成
證明:對於乙個可行的解x,顯然解集y(yi=xi%2)也是這個問題的乙個解
於是我們將這些二元組連線成一張圖,進行一次dfs標號即可,標號時用一條邊連線起來的兩個點不能同為0或1即可
#include
struct edge g[200010];
int h[10010],c[10010],vis[10010],n,m,cnt=0;
bool dfs(int x,int cl)
else
return1;}
int main(); h[x]=cnt;
g[++cnt]=(edge); h[y]=cnt;
} for(int i=1;i<=n;++i)
if(!vis[i]&&!dfs(i,0)) return
0&puts("no");
puts("yes");
for(int i=1;i<=n;++i) printf("%d ",c[i]);
}
交叉編譯Qt4 8 2
分類 linux qt 2012 07 04 11 36 171人閱讀收藏 舉報 1.安裝交叉編譯器。利用友善之臂自帶的交叉編譯器。將arm linux gcc 4.3.2.tgz 放在 root下,執行如下操作 cd root tar xvzf arm linux gcc 4.3.2.tgz c ...
482 金鑰格式化
給定乙個金鑰字串s,只包含字母,數字以及 破折號 n 個 將字串分成了 n 1 組。給定乙個數字 k,重新格式化字串,除了第乙個分組以外,每個分組要包含 k 個字元,第乙個分組至少要包含 1 個字元。兩個分組之間用 破折號 隔開,並且將所有的小寫字母轉換為大寫字母。給定非空字串 s 和數字 k,按照...
482 金鑰格式化
有乙個金鑰字串 s 只包含字母,數字以及 破折號 其中,n 個 將字串分成了 n 1 組。給你乙個數字 k,請你重新格式化字串,除了第乙個分組以外,每個分組要包含 k 個字元 而第乙個分組中,至少要包含 1 個字元。兩個分組之間需要用 破折號 隔開,並且將所有的小寫字母轉換為大寫字母。給定非空字串 ...