#3WA
On line 1 column 1,read 3,expected 2.
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n,m;
string s;
struct edge{
int v,l,w;
bool operator <(const edge &a)const{
return a.w<w;
}
};
vector<edge> mp[N];
priority_queue<edge> q;
int vis[N],dis[N];
void dij(){
memset(dis,0x3f,sizeof(dis));
q.push({1,-1,0});
dis[1]=0;
while(!q.empty()){
edge h=q.top();
q.pop();
int u=h.v;
if(vis[u]) continue;
vis[u]=1;
int len=mp[u].size();
for(int i=0;i<len;i++){
int v=mp[u][i].v,l=mp[u][i].l,w=h.w;
if(h.l!=-1&&l!=h.l) w++;
if(w<dis[v]){
q.push({v,l,w});
dis[v]=w;
}
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>m>>n;
for(int i=1;i<=m;i++){
cin>>ws;
getline(cin,s);
int len=s.size(),u=-1,v=-1;
for(int j=0;j<len;j++){
if(s[j]>='0'&&s[j]<='9'){
if(v==-1) v=s[j]-'0';
else v=v*10+(s[j]-'0');
}
else if(s[j]==' '){
if(u!=-1)
mp[u].push_back({v,i,0});
u=v,v=-1;
}
}
if(u!=-1)
mp[u].push_back({v,i,0});
}
dij();
if(dis[n]==0x3f3f3f3f)
cout<<"NO";
else
cout<<dis[n];
return 0;
}
求助!!!