请问此代码为什么会输出-1
Dijkstra
#include<bits/stdc++.h>
#define MAXN 100001
using namespace std;
struct City{
int town;
int way;
int way2;
};
int n,m,d;
vector<City> city[100001];
int s,e;
int dst[MAXN]; //距离数组
bool vis[MAXN]; //访问数组
int main(){
cin>>n;
cin>>m;
for(int i=0;i<m;i++){
City cnt1,cnt2;
int a,b,c;
cin>>a>>b>>c;
cnt1.town=b;cnt1.way=0;cnt1.way2=c;
cnt2.town=a;cnt2.way=0;cnt2.way2=c;
city[a].push_back(cnt1);
city[b].push_back(cnt2);
}
cin>>d;
for(int i=0;i<d;i++){
int a,b;
cin>>a>>b;
for(int i=0;i<city[a].size();i++){
if(city[a][i].town==b){
city[a][i].way=city[a][i].way2;
cout<<city[a][i].way<<endl;
}
}for(int i=0;i<city[b].size();i++){
if(city[b][i].town==a){
city[b][i].way=city[b][i].way2;
cout<<city[b][i].way<<endl;
}
}
}
cin>>s>>e;
memset(dst,2147483647,sizeof(dst));
for(int i=0;i<city[s].size();i++){
dst[city[s][i].town]=city[s][i].way;
}
vis[s]=1;
for(int k=1;k<=n-1;k++){
int minnode,minn=2147483647;
for(int i=1;i<=n;i++){
if(!vis[i]&&minn>dst[i]){
minn=dst[i];
minnode=i;
}
}
vis[minnode]=1;
for(int i=0;i<city[minnode].size();i++){
int t=city[minnode][i].town;
if(!vis[i]&&dst[t]>dst[minnode]+city[minnode][i].way){
dst[t]=dst[minnode]+city[minnode][i].way;
}
}
}
cout<<dst[e];
return 0;
}