ECUST 09年 校赛个人赛第三场部分解题报告(A,D,F,I)
A. The K-th City
#include<iostream>
#include<algorithm>
using namespace std;
struct Pos
{
long pos;
long dis;
};
bool cmpFun(Pos a,Pos b)
{
if(a.dis == b.dis)
return a.pos < b.pos;
else
return a.dis < b.dis;
}
Pos pos[201];
long mini[201][201];
int main()
{
long n,m;
while(cin>>n,n)
{
cin>>m;
int i,j,k;
for(i = 0 ; i < n ; i ++)
{
mini[i][i] = 0;
for(j = i + 1 ; j < n ; j ++)
mini[i][j] = mini[j][i] = 100000000;
}
while(m --)
{
scanf("%d %d %d",&i,&j,&k);
if(mini[i][j] > k)
mini[i][j] = mini[j][i] = k;
}
for (k=0;k<n;k++)
for (i=0;i<n;i++)
for (j=0;j<n;j++)
if (mini[i][k]+mini[k][j]<mini[i][j])
mini[i][j] = mini[j][i] =mini[i][k]+mini[k][j];
for(i = 1 ; i < n ; i ++)
{
pos[i - 1].pos = i;
pos[i - 1].dis = mini[0][i];
}
sort(pos,pos + n - 1 ,cmpFun);
cin>>i;
cout<<pos[i - 1].pos<<" "<<pos[i - 1].dis<<endl;
}
return 0;
}D. City Mapping
F. Tetris
I. Girl Friend
Last updated
Was this helpful?