description
曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。
陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上刷街了。非常悲劇的一點是,河蟹是一種不和諧的生物,當兩隻河蟹封鎖了相鄰的兩個點時,他們會發生衝突。
詢問:最少需要多少只河蟹,可以封鎖所有道路並且不發生衝突。
input
第一行:兩個整數n,m
接下來m行:每行兩個整數a,b,表示點a到點b之間有道路相連。
資料保證:
1<=n<=10000
1<=m<=100000
任意兩點之間最多有一條道路。
output
僅一行:如果河蟹無法封鎖所有道路,則輸出「impossible」,否則輸出乙個整數,表示最少需要多少只河蟹。
sample input
樣例輸入1:
3 31 2
1 32 3
樣例輸入2:
3 21 2
2 3sample output
樣例輸出1:
impossible
樣例輸出2:
思路:
暴力。。。。。。
pascal:
var n,m,i,j,l,x,y,ans1,ans2,ans:longint;
a:array[1..10000,0..100] of longint;
b,bz:array[1..10000] of longint;
bt:array[1..10000] of boolean;
function
min(x,y:longint):longint;
begin
if xthen
exit(x) else
exit(y);
end;
procedure
dg(x,y:longint);
// y:boolean);
var i:longint;
begin
bt[x]:=true;
if b[x]<10
then
begin
b[x]:=b[x]+1;
begin
for i:=1
to a[x,0] do
begin
if y=1
then
begin
if bz[a[x,i]]<>1
then
begin
bz[a[x,i]]:=2;
dg(a[x,i],2);
endelse
begin
writeln('impossible');
halt;
end;
endelse
begin
if bz[a[x,i]]<>2
then
begin
bz[a[x,i]]:=1;
dg(a[x,i],1);
endelse
begin
writeln('impossible');
halt;
end;
end;
end;
end;
end;
end;
begin
readln(n,m);
for i:=1
to m do
begin
readln(x,y);
inc(a[x,0]);
a[x,a[x,0]]:=y;
inc(a[y,0]);
a[y,a[y,0]]:=x;
end;
for j:=1
to n do
ifnot bt[j] then
begin
ans1:=0;ans2:=0;
fillchar(bz,sizeof(bz),0);
fillchar(b,sizeof(b),0);
dg(j,1);
for i:=1
to n do
if bz[i]=1
then inc(ans1);
for i:=1
to n do
if bz[i]=2
then
begin
l:=i;
break;
end;
if l<>0
then
begin
fillchar(bz,sizeof(bz),0);
fillchar(b,sizeof(b),0);
dg(l,1);
for i:=1
to n do
if bz[i]=1
then inc(ans2);
//writeln(min(ans1,ans2));
ans:=ans+min(ans1,ans2);
endelse
//writeln(ans1);
ans:=ans+ans1;
end;
writeln(ans);
end.
水法真神奇,暴力出奇蹟。 封鎖陽光大學
曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上...
黑白染色 封鎖陽光大學
所謂黑白染色,就是指用bfs或dfs依次遍歷每乙個點,同時進行染色,一黑一白,如果遇到已經染過色的點並且點的顏色和即將要染的顏色衝突,就說明無法進行二分,無法滿足染色。大概就是這樣的。下面我們看一道例題 曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽...
封鎖陽光大學(洛谷 1330)
曹是乙隻愛刷街的老曹,暑假期間,他每天都歡快地在陽光大學的校園裡刷街。河蟹看到歡快的曹,感到不爽。河蟹決定封鎖陽光大學,不讓曹刷街。陽光大學的校園是一張由n個點構成的無向圖,n個點之間由m條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上...