#include <stdio.h>
#include <string.h>
#include <map>
#include <set>
#include <queue>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
const int inf=10000000000000;
vector<int> G[10010];
map<pair<int,int>,int > mp;
bool vis[10010];
int A[10010];
int N,K;
int st,ed;
vector<int> temppath,path;
int stopnum,mintrans;
void DFS(int now)
{
if(now==ed)
{
temppath.push_back(now);
if(temppath.size()<stopnum)
{
stopnum=temppath.size();
path=temppath;
int preline=-1;
int temptrans=0;
for(int i=1;i<temppath.size();i++)
{
int s1=temppath[i-1];
int s2=temppath[i];
pair<int,int> p(s1,s2);
if(mp[p]!=preline)
{
preline=mp[p];
temptrans++;
}
}
mintrans=temptrans;
}
else if(temppath.size()==stopnum)
{
int preline=-1;
int temptrans=0;
for(int i=1;i<temppath.size();i++)
{
int s1=temppath[i-1];
int s2=temppath[i];
pair<int,int> p(s1,s2);
if(mp[p]!=preline)
{
preline=mp[p];
temptrans++;
}
}
if(temptrans<mintrans)
{
path=temppath;
mintrans=temptrans;
}
}
temppath.pop_back();
return;
}
vis[now]=true;
temppath.push_back(now);
for(int i=0;i<G[now].size();i++)
{
if(vis[G[now][i]]==false)
{
DFS(G[now][i]);
}
}
temppath.pop_back();
vis[now]=false;
}
int main()
{
scanf("%d",&N);
int pre,now;
for(int i=1;i<=N;i++)
{
scanf("%d%d",&K,&pre);
for(int j=1;j<K;j++)
{
scanf("%d",&now);
int s1=pre,s2=now;
G[s1].push_back(s2);
G[s2].push_back(s1);
pair<int,int> p1(s1,s2);
pair<int,int> p2(s2,s1);
mp[p1]=i;
mp[p2]=i;
pre=now;
}
}
int M;
scanf("%d",&M);
for(int i=0;i<M;i++)
{
scanf("%d%d",&st,&ed);
temppath.clear();
path.clear();
memset(vis,false,sizeof(vis));
stopnum=inf;
mintrans=inf;
vis[st]=true;
DFS(st);
printf("%d\n",stopnum-1);
int preline=-1;
int prestop=-1;
for(int i=1;i<path.size();i++)
{
int s1=path[i-1];
int s2=path[i];
pair<int,int> p(s1,s2);
if(mp[p]!=preline)
{
if(preline!=-1)
{
printf("Take Line#%d from %04d to %04d.\n",preline,prestop,path[i-1]);
}
prestop=path[i-1];
preline=mp[p];
}
}
printf("Take Line#%d from %04d to %04d.\n",preline,prestop,ed);
}
return 0;
}
PAT甲1131 Subway Map(30 分)
最新推荐文章于 2020-10-12 09:06:01 发布