20 分 WA 求助 , 悬赏一关注
查看原帖
20 分 WA 求助 , 悬赏一关注
481527
AC_CSP楼主2023/3/29 23:05
# include <bits/stdc++.h>
using namespace std ;
const int N = 2e2 + 7 ;
const int M = 4e4 + 7 ;
int n , m , dis[N][N] , city[N][N] ;
bool ans[N] ; int cnt ;
int main () {
	// ios :: sync_with_stdio ( false ) ; cin . tie ( 0 ) , cout . tie ( 0 ) ; 
	memset ( dis , 0x3f , sizeof dis ) ;
	memset ( city , -1 , sizeof city ) ;
	cin >> n >> m ;
	for ( int i = 1 ; i <= n ; i ++ ) dis[i][i] = 0 ;
	for ( int i = 1 ; i <= m ; i ++ ) {
		int u , v , w ; cin >> u >> v >> w ;
		dis[u][v] = dis[v][u] = w ;
	}
	for ( int k = 1 ; k <= n ; k ++ ) {
		for ( int i = 1 ; i <= n ; i ++ ) {
			for ( int j = 1 ; j <= n ; j ++ ) {
				if ( i == k || i == j ) continue ;
				if ( dis[i][j] > dis[i][k] + dis[k][j] ) {
					dis[i][j] = dis[i][k] + dis[k][j] ;
					city[i][j] = k ;
				}
				else if ( dis[i][j] == dis[i][k] + dis[k][j] ) city[i][j] = -1 ;
			}
		}
	}
	// for ( int i = 1 ; i <= n ; i ++ ) 
	// 	 for ( int j = 1 ; j <= n ; j ++ ) 
	// 		 cout << i << " " << j << " " << dis[i][j] << " " << city[i][j] << "\n" ;
	for ( int i = 1 ; i <= n ; i ++ ) 
		for ( int j = 1 ; j <= n ; j ++ ) 
			if ( city[i][j] != -1 ) ans[city[i][j]] = 1 , ++ cnt ;
	if ( ! cnt ) cout << "No important cities.\n" ;
	else for ( int i = 1 ; i <= n ; i ++ ) if ( ans[i] ) cout << i << " " ;
	return 0 ;
}
2023/3/29 23:05
加载中...