#include "bits/stdc++.h"
using namespace std;
#define INF 0x3ffff
int from[100],to[100],first[100],next_[100],w[100],dist[100],cnt=0;
void add(int f,int t,int ww)
{
to[cnt]=t;
from[cnt]=f;
w[cnt]=ww;
next_[cnt]=first[f];
first[f]=cnt++;
}
void SPFA(int s)
{
//初始化距离数组
memset(dist,INF,sizeof dist);
int vis[100];
//初始化标记数组
memset(vis,0,sizeof vis);
queue<int> q;
q.push(s);
vis[s]=1;
dist[s]=0;
while (!q.empty())
{
int ss=q.front();q.pop(); vis[ss]=0;
for(int i=first[ss];i!=-1;i=next_[ss])
if(dist[to[i]]>(dist[from[i]]+w[i]))
{
dist[to[i]]=(dist[from[i]]+w[i]);//松弛操作
if(!vis[to[i]])//若未在队列中则将该节点加入队列之中,并修改相应的标记
{
q.push(to[i]);
vis[to[i]]=1;
}
}
}
}