输出错误求助
查看原帖
输出错误求助
579492
CZCCZC楼主2022/7/18 08:38

RT.

#include<bits/stdc++.h>
using namespace std ;
const int MAX = 1005 ;
const int MAXN = 105 ;
const int INF = 1e8 ;
int cnt , T , F[MAXN][MAX] , D[MAX][MAX] , Next[MAX] , Ans , Sup , Now  , a , b , c ;
int N , M , i , j , k , Log[MAX] , Max , A[MAXN][MAXN] ;
int main() {
	memset(A , 63 , sizeof(A)) ;
	memset(F , 63 , sizeof(F)) , Ans = INF ;
	cin >> N >> M ; Max = (1 << N) - 1 ;
	for(i = 1 ; i <= M ; i++) 
		scanf("%d %d %d" , &a , &b , &c) ;
		A[a][b] = A[b][a] = min(c , A[a][b]) ;
	for(i = 0 ; i <= N ; i++) Log[1 << i] = i ;
	for(i = 0 ; i <= N ; i++) F[0][1 << i] = 0 ;
	for(i = 1 ; i <= Max ; i++) {
		cnt = 0 ;
		for(j = Sup = Max ^ i ; j ; j = (j - 1) & Sup) Next[j] = cnt , cnt = j ;
		for(j = cnt ; j ; j = Next[j]) {
			Now = Log[j & (-j)] + 1 , T = INF ;
			for(k = 1 ; k <= N ; k++) 
				if(1 << (k - 1) & i) T = min(T , A[Now][k]) ;
			D[i][j] = D[i][j ^ (j & (-j))]  + T ;
		}
	}
	for(i = 1 ; i < N ; i++)
		for(j = 1 ; j <= Max ; j++)
			for(k = j ; k ; k = (k - 1) & j)
				F[i][j] = min(F[i][j] , F[i - 1][j ^ k] + i * D[j ^ k][k]) ;
	for(i = 0 ; i <= N ; i++) Ans = min(Ans , F[i][Max]) ;
	cout << Ans << endl ;
	return 0 ;
}

总是输出INF(1e8),为什么?

2022/7/18 08:38
加载中...