问题大概出在更新节点入队后再循环出队的时候无法进行正确的松弛操作
void spfa(int root){
memset(dis,999999,sizeof(dis));
queue<int>td;
bool flag[10050];
memset(flag,false,sizeof(flag));
flag[root]=true;
td.push(root);
dis[root]=0;
while(!td.empty()){
int x=td.front();
td.pop();
flag[x]=false;
//cout<<x<<endl;
for(int i=1;i<=m;i++){
if(qwq[i].f==x){
int a=qwq[i].t;
cout<<"link"<<x<<","<<a<<endl;
//加入更新队列
if(flag[a]==false){
td.push(a);
flag[a]=true;
}
//松弛
dis[a]=min(dis[a],dis[x]+qwq[i].val);
}
}
}
}