Codevs2776 尋找代表元

2022-01-10 23:39:14 字數 2316 閱讀 6458

時間限制: 1 s

空間限制: 256000 kb

題目等級 : ** gold

廣州二中蘇元實驗學校一共有n個社團,分別用1到n編號。

廣州二中蘇元實驗學校一共有m個人,分別用1到m編號。每個人可以參加乙個或多個社團,也可以不參加任何社團。

每個社團都需要選乙個代表。謙哥希望更多的人能夠成為代表。

輸入描述 input description

第一行輸入兩個數n和m。

以下n行每行若干個數,這些數都是不超過m的正整數。其中第i行的數表示社團i的全部成員。每行用乙個0結束。

輸出描述 output description

輸出最多的能夠成為代表的人數。

樣例輸入 sample input

4 41 2 0

1 2 0

1 2 0

1 2 3 4 0

樣例輸出 sample output

資料範圍及提示 data size & hint

各個測試點1s

資料範圍

n,m<=200

分類標籤 tags 點此展開 

題解:裸二分圖匹配不解釋

1

type

2 point=^node;

3 node=record

4g:longint;

5next:point;

6end;7

var8

i,j,k,l,m,n:longint;

9 c,f:array[0..1000] of

longint;

10 a:array[0..1000] of

point;

11procedure

add(x,y:longint);inline;

12var

p:point;

13begin

14new(p);

15 p^.g:=y;

16 p^.next:=a[x];

17 a[x]:=p;

18end;19

function

check(x:longint):boolean;inline;

20var

p:point;

21begin

22 p:=a[x];

23while p<>nil

do24

begin

25if f[p^.g]<>i then

26begin

27 f[p^.g]:=i;

28if c[p^.g]=0

then

29begin

30 c[p^.g]:=x;

31exit(true);

32end

33else

if check(c[p^.g]) then

34begin

35 c[p^.g]:=x;

36exit(true);

37end;38

end;

39 p:=p^.next;

40end;41

exit(false);

42end;43

4445

46begin

47readln(n,m);

48for i:=1

to n do

49begin

50 a[i]:=nil;51

while

not(eoln) do

52begin

53read(j);

54if j=0

then

break;

55add(i,j);

56end;57

readln;

58end

;59 fillchar(c,sizeof(c),0

);60 fillchar(f,sizeof(f),0);l:=0;61

for i:=1

to n do

62if check(i) then

inc(l);

63writeln(l);

64readln;

65end

.66

codevs2776尋找代表元

2776 尋找代表元 時間限制 1 s 空間限制 256000 kb 題目等級 gold 題目描述 description 廣州二中蘇元實驗學校一共有n個社團,分別用1到n編號。廣州二中蘇元實驗學校一共有m個人,分別用1到m編號。每個人可以參加乙個或多個社團,也可以不參加任何社團。每個社團都需要選乙...

尋找代表元 codevs 2776

題目描述 description 廣州二中蘇元實驗學校一共有n個社團,分別用1到n編號。廣州二中蘇元實驗學校一共有m個人,分別用1到m編號。每個人可以參加乙個或多個社團,也可以不參加任何社團。每個社團都需要選乙個代表。謙哥希望更多的人能夠成為代表。輸入描述 input description 第一行...

匈牙利演算法 codevs 2776 尋找代表元

時間限制 1 s 空間限制 256000 kb 題目等級 gold 廣州二中蘇元實驗學校一共有n個社團,分別用1到n編號。廣州二中蘇元實驗學校一共有m個人,分別用1到m編號。每個人可以參加乙個或多個社團,也可以不參加任何社團。每個社團都需要選乙個代表。謙哥希望更多的人能夠成為代表。輸入描述 inpu...