为什么会RE呢?在编译器运行时输出正确且不报错
查看原帖
为什么会RE呢?在编译器运行时输出正确且不报错
1255488
__notTrueLight__楼主2024/7/1 14:01

没开O2,3个RE;

开了O2,紫气东来(全RE)。

#include<iostream>
using namespace std;
int n,m;
int map[111][111];
int main(){
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int ii=1;ii<=n;ii++){
			if(i==ii){map[i][ii]=0;}
			else{map[i][ii]=-1;}
		}
	}
	for(int i=1,A,B,C;i<=m;i++){
		scanf("%d %d %d",&A,&B,&C);
		if(map[A][B]==-1 || map[A][B]>C){
			map[A][B]=map[B][A]=C;
		}
	}
	int path[n][n];
	for(int i=1;i<=n;i++){
		for(int ii=1;ii<=n;ii++){
			if(i==ii || map[i][ii]==-1){path[i][ii]=-1;}
			else{path[i][ii]=i;}
		}
	}
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int ii=1;ii<=n;ii++){
				if(i==k || k==ii || i==ii){continue;}
				if(map[i][k]==-1 || map[k][ii]==-1){continue;}
				if(map[i][ii]==-1){
					map[i][ii]=map[i][k]+map[k][ii];
					path[i][ii]=path[k][ii];
				}else if(map[i][ii]>map[i][k]+map[k][ii]){
					map[i][ii]=map[i][k]+map[k][ii];
					path[i][ii]=path[k][ii];
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int ii=1;ii<=n;ii++){
			printf("%d ",map[i][ii]);
		}
		printf("\n");
	}

	return/*191981*/0;
}

Why 啊???

2024/7/1 14:01
加载中...