Submission #1338818

#TimeUsernameProblemLanguageResultExecution timeMemory
1338818vjudge1Shops (NOI24_shops)C++20
38 / 100
307 ms60152 KiB
#include <bits/stdc++.h>
using namespace std;
#define ii pair <int, int>
#define X first
#define Y second
const int maxn = 5e5 + 5;
int n, m, ans = 0, vis[maxn];
stack <int> q;
vector <ii> adj[maxn];
vector <int> gr[maxn];
void dfs (int u) {
    for (auto v : gr[u]) {
        if (vis[v]) continue;
        vis[v] = 3 - vis[u];
        dfs (v);
    }
}
signed main () {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    for (int i = 1, u, v, w; i <= m; i++) {
        cin >> u >> v >> w;
        adj[u].push_back ({v, w});
        adj[v].push_back ({u, w});
    }
    for (int i = 1; i <= n; i++) {
        sort (adj[i].begin(), adj[i].end(), [&] (ii x, ii y) {
              return x.Y < y.Y;
        });
        gr[i].push_back (adj[i].begin()->X);
        gr[adj[i].begin()->X].push_back (i);
        ans = max (ans, adj[i].begin()->Y);
    }
    for (int i = 1; i <= n; i++) {
        if (vis[i]) continue;
        vis[i] = 1;
        dfs (i);
    }
    cout << ans << '\n';
    for (int i = 1; i <= n; i++) {
        if (vis[i] == 1) cout << 'B';
        else cout << 'D';
    }
}
// qmdzvcl
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...