2题并查集问题PASCAL求解1.体育场Description浙江省第十二届大学生运动会在浙江师范大学举行,为此在浙师大建造了一座能容纳近万人的新体育场.观众席每一行构成一个圆形,每个圆形由300个座
来源:学生作业帮助网 编辑:作业帮 时间:2024/09/03 00:05:45
![2题并查集问题PASCAL求解1.体育场Description浙江省第十二届大学生运动会在浙江师范大学举行,为此在浙师大建造了一座能容纳近万人的新体育场.观众席每一行构成一个圆形,每个圆形由300个座](/uploads/image/z/14321684-20-4.jpg?t=2%E9%A2%98%E5%B9%B6%E6%9F%A5%E9%9B%86%E9%97%AE%E9%A2%98PASCAL%E6%B1%82%E8%A7%A31.%E4%BD%93%E8%82%B2%E5%9C%BADescription%E6%B5%99%E6%B1%9F%E7%9C%81%E7%AC%AC%E5%8D%81%E4%BA%8C%E5%B1%8A%E5%A4%A7%E5%AD%A6%E7%94%9F%E8%BF%90%E5%8A%A8%E4%BC%9A%E5%9C%A8%E6%B5%99%E6%B1%9F%E5%B8%88%E8%8C%83%E5%A4%A7%E5%AD%A6%E4%B8%BE%E8%A1%8C%2C%E4%B8%BA%E6%AD%A4%E5%9C%A8%E6%B5%99%E5%B8%88%E5%A4%A7%E5%BB%BA%E9%80%A0%E4%BA%86%E4%B8%80%E5%BA%A7%E8%83%BD%E5%AE%B9%E7%BA%B3%E8%BF%91%E4%B8%87%E4%BA%BA%E7%9A%84%E6%96%B0%E4%BD%93%E8%82%B2%E5%9C%BA.%E8%A7%82%E4%BC%97%E5%B8%AD%E6%AF%8F%E4%B8%80%E8%A1%8C%E6%9E%84%E6%88%90%E4%B8%80%E4%B8%AA%E5%9C%86%E5%BD%A2%2C%E6%AF%8F%E4%B8%AA%E5%9C%86%E5%BD%A2%E7%94%B1300%E4%B8%AA%E5%BA%A7)
2题并查集问题PASCAL求解1.体育场Description浙江省第十二届大学生运动会在浙江师范大学举行,为此在浙师大建造了一座能容纳近万人的新体育场.观众席每一行构成一个圆形,每个圆形由300个座
2题并查集问题PASCAL求解
1.体育场
Description
浙江省第十二届大学生运动会在浙江师范大学举行,为此在浙师大建造了一座能容纳近万人的新体育场.
观众席每一行构成一个圆形,每个圆形由300个座位组成,对300个座位按照顺时针编号1到300,且可以认为有无数多行.现在比赛的组织者希望观众进入场地的顺序可以更加的有趣,在门票上并没有规定每个人的座位,而是与这个圈中某个人的相对位置,可以坐在任意一行.
门票上标示的形式如下:A B x 表示第B个人必须在A的顺时针方向x个位置(比如A坐在4号位子,x=2,则B必须坐在6号位子).
现在你就座位志愿者在入场口检票.如果拿到一张门票,与之前给定的矛盾,则被视为是假票,如果无矛盾,视为真票.现在给定该行入场观众的顺序,以及他们手中的门票,请问其中有多少假票?
Input
第一行两个数N(1
2题并查集问题PASCAL求解1.体育场Description浙江省第十二届大学生运动会在浙江师范大学举行,为此在浙师大建造了一座能容纳近万人的新体育场.观众席每一行构成一个圆形,每个圆形由300个座
Source
Problem Id:1198 User Id:qihaochen
Memory:376K Time:186MS
Language:Pascal Result:100
Source
var
n,m,a,b,x,xx,y,i,sum:longint;
c,f:array[1..50000] of longint;
function getfather(x:longint):longint;
begin
if f[x]=x then getfather:=x
else
begin
getfather:=getfather(f[x]);
c[x]:=(c[x]+c[f[x]]) mod 300;
f[x]:=getfather;
end;
end;
begin
readln(n,m);
sum:=0;
for i:=1 to n do
f[i]:=i;
for i:=1 to m do
begin
readln(a,b,xx);
x:=getfather(a);
y:=getfather(b);
if x=y then
begin
if (c[b]-c[a]+300) mod 300xx then inc(sum);
end
else
begin
f[y]:=a;
c[y]:=(xx-c[b]+300) mod 300;
end;
end;
writeln(sum);
end.
第2题时间紧迫,没来得及写