1 流程
dist[所有点] = INF
dist[起始点] = 0
for( k条边 )
{
复制上一轮情况
扫描所有出边并更新
}
判断是否能走
2 code
int bell_man( int u )
{
memset( dist, 0x3f, sizeof dist );
dist[u] = 0;
for( int i = 0; i < k; i ++ )
{
memcpy( back, dist , sizeof dist );
for( int j = 1; j <= m; j ++ )
{
int x = a[j], y = b[j], z = c[j];
dist[y] = min( dist[y] , back[x] + z );
}
}
if( dist[n] >0x3f3f3f3f/2 )
return -1;
else
return dist[n];
}


京公网安备 11010502036488号