建圖建錯4次 改了2個鐘。。。這本是道水題。。。
1view codeprogram
hehe;
2type
3 edge=record
4q,z,next:longint;
5end;6
var7
n,m,q,i,j,k,cnt:longint;
8 p,pd:array[0..500000] of
boolean;
9 e:array[0..500000] of
edge;
10 ans,c,first,f,d:array[0..500000] of
longint;
1112
function
find(a:longint):longint;
13begin
14if f[a]=a then
exit(a);
15 f[a]:=find(f[a]);
16exit(f[a]);
17end;18
19begin
20 fillchar(first,sizeof(first),255
);21 fillchar(e,sizeof(e),255
);22
fillchar(p,sizeof(p),true);
23read(n,m);
24for i:=0
to n-1
do25 f[i]:=i;
26for i:=1
to m do
27begin
28read(j,k);
29if first[j]=-1
then
30 first[j]:=i;
31 e[i].q:=j;
32 e[i].z:=k;
33 e[c[j]].next:=i;
34 c[j]:=i;
35if first[k]=-1
then
36 first[k]:=i+m;
37 e[i+m].q:=j;
38 e[i+m].z:=k;
39 e[c[k]].next:=i+m;
40 c[k]:=i+m;
41end;42
read(q);
43for i:=1
to q do
44begin
45 read(d[q-i+1
]);46 p[d[q-i+1]]:=false;
47end;48
for i:=0
to n-1
do49
if p[i] then
inc(cnt);
50for i:=0
to n-1
do51
if p[i] then
52begin
53 k:=first[i];
54while k<>-1
do55
begin
56if (p[e[k].q])and(p[e[k].z]) then
57if find(e[k].q)<>find(e[k].z) then
58begin
59 f[find(e[k].q)]:=find(e[k].z);
60dec(cnt);
61end
;62 k:=e[k].next;
63end;64
end;
65 ans[0]:=cnt;
66for i:=1
to q do
67begin
68inc(cnt);
69 p[d[i]]:=true;
70 k:=first[d[i]];
71while k<>-1
do72
begin
73if (p[e[k].q])and(p[e[k].z]) then
74if find(e[k].q)<>find(e[k].z) then
75begin
76 f[find(e[k].q)]:=find(e[k].z);
77dec(cnt);
78end
;79 k:=e[k].next;
80end
;81 ans[q-i+1]:=cnt;
82end;83
for i:=1
to q do
84writeln(ans[i]);
85 writeln(ans[0
]);86
end.
time limit: 3 sec memory limit: 162 mb
submit: 3484 solved: 1554
[submit][status][discuss]
很久以前,在乙個遙遠的星系,乙個黑暗的帝國靠著它的超級**統治者整個星系。某一天,憑著乙個偶然的機遇,一支反抗軍摧毀了帝國的超級**,並攻下了星系中幾乎所有的星球。這些星球通過特殊的以太隧道互相直接或間接地連線。 但好景不長,很快帝國又重新造出了他的超級**。憑藉這超級**的力量,帝國開始有計畫地摧毀反抗軍占領的星球。由於星球的不斷被摧毀,兩個星球之間的通訊通道也開始不可靠起來。現在,反抗軍首領交給你乙個任務:給出原來兩個星球之間的以太隧道連通情況以及帝國打擊的星球順序,以盡量快的速度求出每一次打擊之後反抗軍佔據的星球的連通快的個數。(如果兩個星球可以通過現存的以太通道直接或間接地連通,則這兩個星球在同乙個連通塊中)。
輸入檔案第一行包含兩個整數,n (1 <= n <= 2m) 和m (1 <= m <= 200,000),分別表示星球的數目和以太隧道的數目。星球用0~n-1的整數編號。接下來的m行,每行包括兩個整數x, y,其中(0<=x<>y
輸出檔案的第一行是開始時星球的連通塊個數。接下來的n行,每行乙個整數,表示經過該次打擊後現存星球的連通塊個數。
8 13
0 11 6
6 55 0
0 61 2
2 33 4
4 57 1
7 27 6
3 6516
3571
1123
3[submit][status][discuss]
BZOJ 1015 並查集 連通塊
很久以前,在乙個遙遠的星系,乙個黑暗的帝國靠著它的超級 統治者整個星系。某一天,憑著乙個偶然的 機遇,一支反抗軍摧毀了帝國的超級 並攻下了星系中幾乎所有的星球。這些星球通過特殊的以太隧道互相直 接或間接地連線。但好景不長,很快帝國又重新造出了他的超級 憑藉這超級 的力量,帝國開始有計畫 地摧毀反抗軍...
bzoj1015 星球大戰starwar
很久以前,在乙個遙遠的星系,乙個黑暗的帝國靠著它的超級 統治者整個星系。某一天,憑著乙個偶然的機遇,一支反抗軍摧毀了帝國的超級 並攻下了星系中幾乎所有的星球。這些星球通過特殊的以太隧道互相直接或間接地連線。但好景不長,很快帝國又重新造出了他的超級 憑藉這超級 的力量,帝國開始有計畫地摧毀反抗軍占領的...
jsoi2008星球大戰bzoj1015
很簡單的一題,但是資料範圍看錯了和讀題時沒看到是0到n 1搞得wa了一次tle了一次真是弱啊喵,就是簡單的一道離線然後並查集加點就可以了喵 include include include include define ll long long define n 400005 define m 400...