http://blog.csdn.net/u011742541/article/details/12916609
bool BellmanFord( int s )
{
for( int i = 0; i < n; i ++ )
dis[i] = inf;
dis[s] = 0;
for( int i = 0; i < n-1; i ++ ) //n-1次松弛
{
for( int j = 0; j < n; j ++ )
{
if( dis[j] == inf )
continue;
for( int k = 0; k < map[j].size(); k ++ )
{
node u = map[j][k];
if( u.w != inf && dis[u.id] > dis[j] + u.w )
dis[u.id] = dis[j] + u.w;
}
}
}
for( int j = 0; j < n; j ++ )
{
if( dis[j] == inf )
continue;
for( int k = 0; k < map[j].size(); k ++ )
{
node u = map[j][k];
if( u.w != inf && dis[u.id] > dis[j] + u.w )
return false;
}
}
return true;
}