疑似spfa被卡,怎么办
#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;
#define int long long
int n,kkksc03;int dis[1000005],c[1000005],t[1000005],fir[1000005],las[1000005],inq[1000005],num;
int ct[1000005];
void add(int u,int v,int w){
c[++num]=w;
t[num]=v;
las[num]=fir[u];
fir[u]=num;
}
int died(int root){
queue<int> q;
q.push(root);
inq[root]=1;
while(!q.empty()){
int num=q.front();
ct[num]++;
q.pop();
if(ct[num]>n)return -1;;
inq[num]=0;
for(int i=fir[num];i!=0;i=las[i]){
if(dis[t[i]]<dis[num]+c[i]){
dis[t[i]]=dis[num]+c[i];
if(inq[t[i]] == 0){
inq[t[i]]=1;
q.push(t[i]);
}
}
}
}
return 0;
}
main(){
scanf("%lld%lld",&n,&kkksc03);
int x,a,b;
for(int i=1;i<=kkksc03;i++){
scanf("%lld%lld%lld",&x,&a,&b);
if(x == 1){
add(a,b,0);
add(b,a,0);
}
else if(x == 2){
add(a,b,1);
}
else if(x == 3){
add(b,a,0);
}
else if(x == 4){
add(b,a,1);
}
else{
add(a,b,0);
}
}
for(int i=1;i<=n;i++)add(n+1,i, 1);
n++;
int xxx=died(n);
n--;
if(xxx==-1){
cout<<-1;
return 0;
}
int sum=0,mn=1e9;
for(int i=1;i<=n;i++){
sum+=dis[i];
mn=min(mn,dis[i]);
}
cout<<sum;
}