2233 2023. 01. 04 10:47:43 sztomi Turista (40) cpp17 Elfogadva 40/40 8ms 4380 KiB
#include <bits/stdc++.h>

using namespace std;

const int INF = 1e9+7;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int n, m, l;
    cin >> n >> m >> l;

    vector<vector<int>> legrovidebb(n+1, vector<int>(n+1, INF));
    vector<int> sorrend;

    for(int i = 0; i < n; i++){
        if(i+1 == l) continue;
        sorrend.push_back(i+1);
    }
    for(int i = 1; i <= n; i++){
        legrovidebb[i][i] = 0;
    }

    int a, b, c;
    for(int i = 0; i < m; i++){
        cin >> a >> b >> c;
        legrovidebb[a][b] = c;
        legrovidebb[b][a] = c;
    }

    // Floyd-Warshall
    for(int k = 1; k <= n; k++){
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                if(legrovidebb[i][k] < INF && legrovidebb[k][j] < INF){
                    legrovidebb[i][j] = min(legrovidebb[i][j], legrovidebb[i][k] + legrovidebb[k][j]);
                }
            }
        }
    }


    vector<int> jo_sorrend;
    int min_ossz = INF;

    do{
        int akt_ut = 0;
        int elozo = l;
        bool jo = true;
        for(int x : sorrend){
            akt_ut += legrovidebb[elozo][x];
            elozo = x;
        }
        akt_ut += legrovidebb[elozo][l];
        if(!jo) continue;

        if(akt_ut < min_ossz){
            min_ossz = akt_ut;
            jo_sorrend.clear();
            for(int x : sorrend){
                jo_sorrend.push_back(x);
            }
        }
    }while(next_permutation(sorrend.begin(), sorrend.end()));

    cout << min_ossz << "\n";
    for(int x : jo_sorrend){
        cout << x << " ";
    }
    cout << "\n";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1956 KiB
2 Elfogadva 0/0 8ms 2056 KiB
3 Elfogadva 2/2 2ms 2260 KiB
4 Elfogadva 2/2 2ms 2464 KiB
5 Elfogadva 2/2 2ms 2668 KiB
6 Elfogadva 2/2 2ms 2868 KiB
7 Elfogadva 2/2 2ms 3072 KiB
8 Elfogadva 2/2 2ms 3180 KiB
9 Elfogadva 2/2 2ms 3304 KiB
10 Elfogadva 2/2 2ms 3488 KiB
11 Elfogadva 2/2 2ms 3704 KiB
12 Elfogadva 2/2 2ms 3656 KiB
13 Elfogadva 2/2 2ms 3656 KiB
14 Elfogadva 2/2 8ms 3792 KiB
15 Elfogadva 2/2 8ms 3992 KiB
16 Elfogadva 2/2 8ms 4088 KiB
17 Elfogadva 3/3 8ms 4216 KiB
18 Elfogadva 3/3 8ms 4272 KiB
19 Elfogadva 3/3 8ms 4380 KiB
20 Elfogadva 3/3 8ms 4380 KiB