90pts Wa #4
查看原帖
90pts Wa #4
416242
New_hope楼主2023/10/7 20:16
#include<bits/stdc++.h>
#define int long long
#define _ 205
using namespace std;

int n,m;
int dis[_][_];
bool prb[_],cer[_];

signed main() {
	
//	freopen("C.in","r",stdin), freopen("C.out","w",stdout);
	scanf("%lld %lld",&n,&m);
	memset(dis,0x3f,sizeof(dis));
	for(int i = 1; i <= m; i ++) {
		int a,b,c; 
		scanf("%lld %lld %lld",&a,&b,&c),
		dis[a][b] = dis[b][a] = c;
	}
	for(int k = 1; k <= n; k ++) {
		for(int i = 1; i <= n; i ++) {
			for(int j = 1; j <= n; j ++) {
				if(dis[i][j] > dis[i][k] + dis[k][j] || dis[i][j] == dis[i][k] + dis[k][j]) {
					dis[i][j] = dis[i][k] + dis[k][j];
					prb[k] = 1;
				}
			}
		}
	}
	bool f = 0;
	for(int i = 1; i <= n; i ++) {
		for(int j = 1; j <= n; j ++) {
			if(i == j) continue;
			int cnt = 0,im;
			for(int k = 1; k <= n; k ++) {
				if(!prb[k]) continue;
				if(dis[i][k] + dis[k][j] == dis[i][j]) {
					im = k;
					cnt ++;
				}
			}
			if(cnt == 1) {
				cer[im] = 1;
				f = 1;
			}
		}
	}
	if(!f) {
		printf("No important cities.");
		return 0;
	}
	for(int i = 1; i <= n; i ++) {
		if(cer[i]) printf("%lld ",i);
	}
	return 0;
}
/*
4 4
1 2 1
2 3 1
4 1 2
4 3 2
*/
2023/10/7 20:16
加载中...