const int N=1005;
int vis[N];
int dis[N];
int head[N<<1];
int n,m,t,cont,x,y,z;
int ans;
struct node
{
int to,next,cost;
}edge[N*N*2];
void add(int from,int to,int cost)
{
edge[cont].to=to;
edge[cont].cost=cost;
edge[cont].next=head[from];
head[from]=cont++;
}
void SPFA(int x)
{
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
dis[i]=1e6;
dis[x]=0;
vis[x]=1;
queue<int>q;
q.push(x);
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].to;
int c=edge[i].cost;
if(dis[v]>dis[u]+c)
{
dis[v]=dis[u]+c;
if(vis[v]==0)
{
vis[v]=1;
q.push(v);
}
}
}
}
}
SPFA
最新推荐文章于 2021-05-02 12:20:20 发布