求源点到任意点的最短路径。
求源点到任意点的最长路径,将边权转变为负数。则求出的最短的路径×-1,为最长路径。
vector<int>vec[1010];
ll w[1010][1010];
void spfa(int u){
memset(dis,INF,sizeof(dis));
memset(vis,0,sizeof(vis));
vis[u]=1;dis[u]=0;
queue<int>q;
q.push(u);
while(!q.empty()){
int now=q.front();
q.pop();
vis[now]=0;
for(int i=0;i<vec[now].size();i++){
int x=vec[now][i];
if(dis[x]>dis[now]+w[now][x]){
dis[x]=dis[now]+w[now][x];
if(!vis[x]){
vis[x]=1;
q.push(x);
}
}
}
}
}