全RE求调
查看原帖
全RE求调
920947
yrteop_maerD楼主2025/8/4 19:45

错误信息:

Runtime Error.
Received signal 11: Segmentation fault with invalid memory reference.

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int a[505][505];
int b[505][505];

int dis1[10005];
int dis2[10005];
int dis3[10005];
int dis4[10005];

int fro[10005];
int vis[10005];

int t[505][505];

int tdis[10005];


inline int dij(int s,int *dis,int f){
	for (int i=1;i<=n;i++){
		dis[i]=1e18;
		vis[i]=0;
	}
	dis[s]=0;
	while (1){
		int x=0;
		for(int i=1;i<=n;i++){
			if(!vis[i] && dis[x]>dis[i]){
				x=i;
			}
		}
		if(!x){
			break;
		}
		vis[x]=1;
		for(int i=1;i<=n;i++){
			int w;
			if (f==1){
				w=a[i][x];
			}
			else{
				w=a[x][i];
			}
			if(!vis[i] && dis[x]+w<dis[i]){
				dis[i]=dis[x]+w;
				if(f<2){
					fro[i]=x;
				}
			}
		}
	}
	if (f<2){
		for (int i=1;i<=n;i++){
			t[fro[i]][i]=1;
		}
	}
}

struct Node{
	int fro,to,val,sp;
}edge[200005];

int tag[505][505];

signed main(){
	cin>>n>>m;
	for (int i=1;i<=n;i++){
		for (int j=1;j<=n;j++){
			a[i][j]=1e14;
			b[i][j]=1e14;
		}
	}
	for (int i=1;i<=n;i++){
		a[i][i]=0;
	}
	for (int i=1;i<=m;i++){
		int x,y,c,d;
		cin>>x>>y>>c>>d;
		edge[i].fro=x;
		edge[i].sp=d;
		edge[i].to=y;
		edge[i].val=c;
		if (a[x][y]>c){
			b[x][y]=a[x][y];
			a[x][y]=c;
		}
		else if (b[x][y]>c){
			b[x][y]=c;	
		}
	}
	dij(1,dis1,0);
	dij(n,dis2,1);
	dij(n,dis3,0);
	dij(1,dis4,1);
	int ans=dis1[n]+dis3[1];
	
	for (int i=1;i<=m;i++){
		int x=edge[i].fro;
		int v=edge[i].to;
		int co=edge[i].val;
		int d=edge[i].sp;
		if (t[x][v] && a[x][v]==co && !tag[x][v]){
			int cu=a[x][v];
			int cv=a[v][x];
			a[v][x]=min(a[v][x],co);
			if (a[x][v]==co){
				a[x][v]=b[x][v];
			} 
			int res=d;
			dij(1,tdis,2);
			res+=tdis[n];
			dij(n,tdis,2);
			res+=tdis[1];
			ans=min(ans,res);
			a[x][v]=cu;
			a[v][x]=cv;
			tag[x][v]=1;
		}
		else{
			ans=min(ans,d+min(dis1[n],dis1[v]+co+dis2[x])+min(dis3[1],dis3[v]+co+dis4[x]));
		}
	}
	if (ans>=1e18){
		cout<<-1;
	}
	else{
		cout<<ans;
	}
	return 0;
}


2025/8/4 19:45
加载中...