求助
  • 板块P1186 玛丽卡
  • 楼主Engiassca
  • 当前回复22
  • 已保存回复22
  • 发布时间2021/5/31 13:18
  • 上次更新2023/11/4 22:28:05
查看原帖
求助
353113
Engiassca楼主2021/5/31 13:18

不开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;
}
2021/5/31 13:18
加载中...