标签:des style blog http color os strong io
Description
Input
Output
Sample Input
Sample Output
#include <stdio.h>
#include <string.h>
#define ff 999999;
int max;
int map[1001][1001];
int vt[1001]={0};
int dis[1001];
void dijkstra()
{
int i, j, pos, k, min;
for(k=0; k<max; k++)
{
pos = 0; min =ff;
for(i=0; i<max+1; i++)
{
if(vt[i]==0 && dis[i]<min )
{
pos = i;
min = dis[i] ;
}
}
vt[pos] = 1;
for(i=0; i<max+1; i++ )
{
if( vt[i]==0 && dis[i]>dis[pos] + map[i][pos] )
{
dis[i] = dis[pos] + map[i][pos] ;
}
}
}
}
int main()
{
int t, s, d, dd, aa[1005];
int i, j;
int mm, kk;
int u, v, w;
while(scanf("%d %d %d", &t, &s, &d )!=EOF)
{
for(i=0; i<1001; i++)
{
for(j=0; j<1001; j++)
{
map[i][j] = ff;
}
}
memset(vt, 0, sizeof(vt));
max=-1;//Max用来确定数据最大的范围
for(i=0; i<t; i++)
{
scanf("%d %d %d", &u, &v, &w );
if(map[u][v] > w)
{
map[u][v] = w;
map[v][u] = w;
}
if(u >max )
{
max = u;
}
if(v >max)
{
max = v ;
}
}
for(i=0; i<s; i++)
{
scanf("%d", &dd);
map[0][dd] = 0;
}
mm = ff;
for(j=0; j<d; j++)
{
scanf("%d", &aa[j] ) ; //输入终点
}
for(i=0; i<max+1; i++)
{
dis[i] = map[0][i] ;
}
vt[0] = 1;
dijkstra();
int min=ff;
for(i=0; i<d; i++)
{
if(min>dis[aa[i]] )
min=dis[aa[i]];
}
printf("%d\n", min );
}
return 0;
}
标签:des style blog http color os strong io
原文地址:http://www.cnblogs.com/yspworld/p/3885664.html