Untitled
unknown
plain_text
a year ago
1.9 kB
10
Indexable
#include <bits/stdc++.h> #define sz(x) ((int)x.size()) #define int long long #define fi first #define se second #define pii pair<int, int> #define pb push_back #define vi vector<int> #define bit(i, x) ((x >> i) & 1) #define ALL(x) x.begin(), x.end() #define REP(i, n) for (int i = 1; i <= n; ++i) #define FOR(i, a, b) for (int i = a; i <= b; ++i) #define FORD(i, a, b) for (int i = a; i >= b; --i) #define Random(lf, rt) (lf + rand() % (rt - lf + 1)) #define Task "vcycle" using namespace std; const int maxn = 2e5 + 7, N = 1e18 + 7, mod = 1e9 + 7; void ADD(int &x, int y) { x += y; if (x >= mod) x -= mod; if (x < 0) x += mod; } void MAXIMIZE(int &x, int y) { x = max(x, y); } void MINIMIZE(int &x, int y) { x = min(x, y); } int n, m; int e[16][16], dp[16][(1 << 15) + 7]; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if (fopen(Task".inp", "r")) { freopen(Task".inp", "r", stdin); freopen(Task".out", "w", stdout); } cin >> n >> m; memset(dp, 0x3f, sizeof dp); memset(e, 0x3f, sizeof e); REP(i, m) { int u, v, w; cin >> u >> v >> w; MINIMIZE(e[u][v], w); MINIMIZE(e[v][u], w); } REP(k, n) REP(u, n) REP(v, n) MINIMIZE(e[u][v], e[u][k] + e[k][v]); dp[1][1] = 0; FOR(mask, 0, (1 << n) - 1) REP(i, n) if (dp[i][mask] < N) { REP(j, n) if (i != j) { int _mask = mask | (1 << (j - 1)); MINIMIZE(dp[j][_mask], dp[i][mask] + e[i][j]); } } int maxx = 1e18; REP(i, n) MINIMIZE(maxx, dp[i][(1 << n) - 1]); if (maxx == 1e18) maxx = -1; cout << maxx; // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); // cerr << "\nTime elapsed: " << 1000.0 * clock() / CLOCKS_PER_SEC << " ms.\n"; return 0; }
Editor is loading...
Leave a Comment