不开O2Re开了Wa
#include<bits/stdc++.h>
using namespace std;
const int N = 1210;
int n,m,a[N],b[N],v[N],dis[N],ans;
bool vis[N];
map<pair<int,int>,bool> banned;
vector<pair<int,int> > edge[N];
int spfa(int s,int e){
queue<int> q;
memset(dis,0x7f,sizeof dis);
memset(vis,0,sizeof vis);
q.push(s);
dis[s]=0;
while(!q.empty()){
int tmp=q.front();
q.pop();
vis[tmp]=0;
for(auto &i:edge[tmp]){
if(banned[pair<int,int>(tmp,i.first)]) continue;
if(i.second+dis[tmp]<dis[i.first]){
dis[i.first]=i.second+dis[tmp];
if(!vis[i.first]){
q.push(i.first);
vis[i.first]=1;
}
}
}
}
return dis[e];
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i]>>v[i];
edge[a[i]].push_back(pair<int,int>(b[i],v[i]));
edge[b[i]].push_back(pair<int,int>(a[i],v[i]));
}
for(int i=1;i<=m;i++){
banned[pair<int,int>(a[i-1],b[i-1])]=0;
banned[pair<int,int>(b[i-1],a[i-1])]=0;
banned[pair<int,int>(a[i],b[i])]=1;
banned[pair<int,int>(b[i],a[i])]=1;
ans=max(ans,spfa(1,n));
}
cout<<ans;
return 0;
}