description
給定m個二元組(a_i, b_i),求x_1, …, x_n滿足:對於任意(a_i, b_i),有|x_ - x_| = 1成立。
input
第1行,2個整數n、m。
第2行到第m + 1行,2個整數a_i和b_i。
output
第1行,1個字串,"yes"表示有解,"no"表示無解。
第2行,n個整數,x_1, x_2, …, x_n,無解則不輸出。
要求|x_i| <= 1,000,000,000,任意一解均可。
sample input
輸入1:
3 31 2
2 33 1
輸入2:
6 51 2
2 33 4
4 15 6
sample output
輸出1:
no輸出2:
yes0 1 0 1 -99 -100
data constraint
對於40%的資料,1 <= n <= 10。
對於100%的資料,1 <= n <= 10,000,0 <= m <= 100,000,1 <= a_i, b_i <= n。
//written by zzy
給你m個二元組(ai, bi),求個,使對於任意(ai, bi),有|x_ai-x_bi|=1
初看以為是數論,後來發現是圖論。
把每個xi看成乙個點,乙個二元組(ai, bi)看成條邊
因為x_ai與x_bi只能差一,所以可以使他們只為0或1
dfs染色,如果當前點沒染過就染上個點相反的色;
如果染過,則判斷是否合法
#include
#include
#include
#include
#include
#define n 10005
#define m 100005
using namespace std;
int i,j,n,m,l,t;
int a[n]
;int x[m*2]
,y[m*2]
,next[m*2]
,list[n]
;bool _check;
bool b[n]
;void
add(
int x)
void
dfs(
int dep,
int p)
else}}
intmain()
for(i=
1;i<=n;i++
) a[i]=-
1,b[i]
=true;
_check=true;
for(i=
1;i<=n;i++)if
(a[i]==-
1)if(_check==false)
printf
("no");
else
}
交叉編譯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 個字元。兩個分組之間需要用 破折號 隔開,並且將所有的小寫字母轉換為大寫字母。給定非空字串 ...