比赛 test2 评测结果 AAAAAAAAAA
题目名称 Geodetic 集合 最终得分 100
用户昵称 FFF团 运行时间 0.037 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2017-03-12 20:39:35
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int a[50][50];
int l,f,k,n,m,u,v,q,e,o,t;
priority_queue<int,vector<int>,greater<int> >s;
int main(){
	freopen("geo.in","r",stdin);
	freopen("geo.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)  a[i][j]=21400;
    for(int i=1;i<=m;i++){
       cin>>u>>v;
       a[u][v]=1;
       a[v][u]=1;
	}
	for(int k=1;k<=n;k++)
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	  if(a[i][k]+a[k][j]<a[i][j])
	     a[i][j]=a[i][k]+a[k][j];
	cin>>k;
    for(int i=1;i<=k;i++){
       cin>>q>>e;
       s.push(q);
       s.push(e);
       
       for(int j=1;j<=n;j++){
	    if(a[q][j]+a[j][e]==a[q][e])
		   s.push(j);
       } 
       while(s.size()!=0){
       	  t=s.top();
       	  cout<<t<<" ";
		  s.pop();
	   }
       cout<<endl; 
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}