Fri Aug 31, 2012 10:21 pm
Admin ( Chờ kiếm ra tên rồi thêm vào sau )
INP
8 9
Vancouver
Yellowknife
Edmonton
Calgary
Winnipeg
Toronto
Montreal
Halifax
Vancouver Edmonton
Vancouver Calgary
Calgary Winnipeg
Winnipeg Toronto
Toronto Halifax
Montreal Halifax
Edmonton Montreal
Edmonton Yellowknife
Edmonton Calgary
OUT
1 4 5 6 8 7 3 1
Link : [You must be registered and logged in to see this link.]
Link :
INP
8 9
Vancouver
Yellowknife
Edmonton
Calgary
Winnipeg
Toronto
Montreal
Halifax
Vancouver Edmonton
Vancouver Calgary
Calgary Winnipeg
Winnipeg Toronto
Toronto Halifax
Montreal Halifax
Edmonton Montreal
Edmonton Yellowknife
Edmonton Calgary
OUT
1 4 5 6 8 7 3 1
- Code:
Const fi='bai.inp'; fo='bai.out';
Var dem,n,m:Integer;
A:array[1..100] Of string;
p:array[1..100,1..100] Of Integer;
t1,x:array[1..100] Of Integer;
dd:array[1..100] Of boolean;
f,g:text;
Procedure doctep;
Var k,v1,v2,i,j:Integer;
s2,s1,s:string;
Begin
Assign(f,fi);
Reset(f);
Readln(f,n,m);
For i:=1 to n do
Readln(f,a[i]);
For i:=1 to m do
Begin
Readln(f,s);
For j:=1 to length(s) do
If s[j]=' ' then
Begin
s1:=copy(s,1,j-1);
s2:=copy(s,j+1,length(s));
End;
For k:=1 to n do
Begin
If a[k]=s1 then v1:=k;
If a[k]=s2 then v2:=k;
End;
p[v1,v2]:=1;
p[v2,v1]:=1;
End;
Close(f);
aSsign(g,fo);
Rewrite(g);
End;
Procedure xuat(i:Integer);
Var d,j:Integer;
Begin
d:=0;
If n=i then inc(d);
If d=1 then Begin t1:=x; dem:=i; End;
End;
Procedure try(i:Integer);
Var j:Integer;
Begin
For j:=1 to n do
If p[x[i-1],j]=1 then
If (i>2) and (j=x[1]) then xuat(i)
Else
If not dd[j] then
Begin
dd[j]:=true;
x[i]:=j;
p[x[i-1],j]:=0;
p[j,x[i-1]]:=0;
try(i+1);
dd[j]:=false;
p[x[i-1],j]:=1;
p[j,x[i-1]]:=1;
End;
End;
Procedure xuat1;
Var i,j:Integer;
Begin
For i:=1 to dem-1 do
Write(g,t1[i]:3);
Write(g,t1[1]:3);
End;
Begin
doctep;
dem:=0;
Fillchar(dd,sizeof(dd),false);
dd[1]:=true;
x[1]:=1;
try(2);
xuat1;
Close(g);
End.
Link : [You must be registered and logged in to see this link.]
Link :