52分我这个思路哪里错了?
查看原帖
52分我这个思路哪里错了?
1016963
paidasen楼主2023/12/16 11:52
#include<bits/stdc++.h>
using namespace std;
int e[100][100],flag[100];
char v;
int minn=0x3f3f3f3f;
int main(){
	int n;
	cin >> n;
	for(int i = 1; i <= 52; i++){
		for(int j = 1; j <= 52; j++){
			e[i][j]=0x3f3f3f3f;
		}
	}
	for(int i = 1; i <= 52; i++){
		e[i][i]=0;
	}
	
	for(int i = 1; i <= n; i++){
		char a,b;
		int c;
		cin >> a >> b >> c;
		int a1,b1;
		if(a >= 'a'){
			a1=a-'a'+27;
		}
		else{
			a1=a-'A'+1;
			flag[a1]=1;
		}
		if(b >= 'a')b1=b-'a'+27;
		else{
			b1=b-'A'+1;
			flag[b1]=1;
		}
		e[a1][b1]=c;
	}
	for(int k = 1; k <= 52; k++){
		for(int i = 1; i <= 52; i++){
			for(int j = 1; j <= 52; j++){
				if(e[i][j] > e[i][k] + e[k][j]){
					e[i][j] = e[i][k] + e[k][j];
				}
			}
		}
	}
	for(int i = 1; i <= 25; i++){
			if(minn > e[i][26]){
				v=i+'A'-1;
				minn=e[i][26];
			}
	}
	cout << v << " " << minn;
	return 0;
}
2023/12/16 11:52
加载中...