#include <stdio.h>
#include <string.h>
#define MAX_POINTS 100
#define INF 99999999
double Map[MAX_POINTS][MAX_POINTS];
int Points[MAX_POINTS];
int main()
{
int i,j,c=0,b,f,m1,m2;
double bf=0,min=0;
char buffer[100];
FILE * fp;
for(i=0;i<MAX_POINTS;i++)
{
Points[i]=0;
}
for(i=0;i<MAX_POINTS;i++)
{
for(j=0;j<MAX_POINTS;j++)
{
Map[i][j] = 0;
}
}
fp = fopen("points.txt","r");
if(fp == NULL)
{
puts("io error!");
return 1;
}
while(fscanf(fp,"%d",&b)!=EOF)
{
Points[c++]=b;
printf("%d ",b);
}
printf("\n%d\n",c);
fclose(fp);
fp = NULL;
fp = fopen("map.txt","r");
if(fp == NULL)
{
puts("io error!");
return 1;
}
i=0,j=0;
while(fscanf(fp,"%s",buffer)!=EOF)
{
sscanf(buffer,"%lf",&bf);
if(i>=c)
{
i=0;
j++;
}
if(j>c)
break;
Map[i++][j]=bf;
}
fclose(fp);
for(i=0;i<c;i++)
{
for(j=0;j<c;j++)
{
printf("%.1lf ",Map[i][j]);
}
puts("");
}
while(1)
{
f=0;
m1 = m2 = 0;
min = INF;
for(i=0;i<c;i++)
{
if(Points[i]==0)
{
f=1;
}
else
{
for(j=0;j<c;j++)
{
if(Points[j]==0)
{
if(Map[i][j]!=0)
{
if(Map[i][j]<min)
{
min = Map[i][j];
m1 = i;
m2 = j;
}
}
}
else
{
}
}
}
}
if(f!=1)
{
return 0;
}
printf("%d -> %d \n",m1,m2);
Points[m2]=1;
}
return 0;
}