封鎖陽光大學

2021-07-14 11:01:08 字數 2674 閱讀 8650

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條道路連線。每只河蟹可以對乙個點進行封鎖,當某個點被封鎖後,與這個點相連的道路就被封鎖了,曹就無法在與這些道路上...