4 条题解

  • 1
    @ 2025-1-7 0:37:04
    // https://dashoj.com/p/80
    #include <bits/stdc++.h>
    
    #define N 50
    using namespace std;
    typedef long long ll;
    int n, g[N][N], e; // 
    bool gb[N];
    ll ans = 0x3f3f3f3f;
    
    void dfs(int x, int a, ll an) {
    	if (a == e) {
    		ans = min(an + g[x][n], ans);
    		return;
    	}
    	for (int i = 2; i <= e; i++) {
    		if (i == x) continue;
    		if (!gb[i]) continue;
    		gb[i] = false;
    		if (an + g[x][i] < ans) dfs(i, a + 1, an + g[x][i]);
    		gb[i] = true;
    	}
    }
    
    int main() {
    	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); //
    	fill(&gb[0], &gb[0] + N, true); //
    	cin >> n; //
    	e = n - 1; //
    	gb[1] = false;
    	for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) cin >> g[i][j]; //
    	dfs(1, 1, 0); //
    	cout << ans << endl; //
    	return 0;
    }
    

    信息

    ID
    80
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    159
    已通过
    27
    上传者