⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex.dpr

📁 tongji acm-online judge solution
💻 DPR
字号:
program Ural_1314(Input,Output);
const
	MaxID=32767;
	MaxEdge=2500*2;
type
	TIndex=Longint;
	TLast=array[1..MaxID]of TIndex;
	TPrev=array[1..MaxEdge]of TIndex;
	TToPtr=array[1..MaxEdge]of TIndex;
	TDistance=array[1..MaxID]of TIndex;
	TQueue=array[1..MaxID]of TIndex;
var
	M:TIndex;
	Last:TLast;
	Prev:TPrev;
	ToPtr:TToPtr;
	DF,DS:TDistance;
	Queue:TQueue;
	
procedure BFS(Start:TIndex;var D:TDistance);
var
	Pop,Push:TIndex;
	Ptr:TIndex;
begin
	Queue[1]:=Start;
	Pop:=1;
	Push:=2;
	D[Start]:=0;
	while Pop<Push do
	begin
		Ptr:=Last[Queue[Pop]];
		while Ptr>0 do
		begin
			if D[ToPtr[Ptr]]=-1 then
			begin
				D[ToPtr[Ptr]]:=D[Queue[Pop]]+1;
				Queue[Push]:=ToPtr[Ptr];
				Inc(Push);
			end;
			Ptr:=Prev[Ptr];
		end;
		Inc(Pop);
	end;
end;
procedure Main;
var
	N,K:TIndex;
	i,j:TIndex;
	X,Y:TIndex;
	Start,Finish:TIndex;
begin
	FillChar(Last,SizeOf(Last),0);
	Readln(N);
	M:=0;
	for i:=1 to N do
	begin
		Read(K,X);
		for j:=2 to K do
		begin
			Read(Y);
			Inc(M);
			ToPtr[M]:=Y;
			Prev[M]:=Last[X];
			Last[X]:=M;
			Inc(M);
			ToPtr[M]:=X;
			Prev[M]:=Last[Y];
			Last[Y]:=M;
			X:=Y;
		end;
		Readln;
	end;

	FillChar(DF,SizeOf(DF),255);
	FillChar(DS,SizeOf(DS),255);
	Read(K,Start);
	BFS(Start,DF);
	for i:=2 to K-1 do
		Read(Y);
	if K=1 then //WA 1 times, should discuss entirely
		Finish:=Start
	else
		Readln(Finish);
	BFS(Finish,DS);

	for i:=1 to MaxID do
		if DF[i]>-1 then
			if DF[i]-DS[i]=K-1 then
				Writeln(i);
end;
begin
	Main;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -