Submission #1400936

#TimeUsernameProblemLanguageResultExecution timeMemory
1400936d4n13lShops (NOI24_shops)C++20
0 / 100
142 ms67692 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int mod = 998244353;
const int INF = 1e15;
const int mag = 1000000000;
vector <int> ans;
vector <bool> visited;
vector <vector <int> > adj2;

void dfs (int v, int c) {
    visited[v]=true;
    ans[v]=c;
    for (auto u : adj2[v]) {
        if (!visited[u]) {
            dfs(u, c^1);
        }
    }
}

void solve() {
    int n, m;
    cin >> n >> m;
    ans = vector <int> (n);
    visited = vector <bool> (n);
    vector <vector <pair <int, int>> > adj(n);
    for (int i = 0; i< n; i++) {
        int x, y, w;
        cin >> x >> y >> w;
        x--;
        y--;
        adj[x].push_back({y, w});
        adj[y].push_back({x, w});
    }
    int small = -INF;
    for (int i = 0; i< n; i++) {
        int curi = INF;
        for (auto u : adj[i]) {
            curi=min(curi, u.second);
        }
        small=max(small, curi);
    }
    adj2 = vector <vector <int> > (n);
    for (int i = 0; i< n; i++) {
        for (auto u: adj[i]) {
            if (u.second<=small) {
                adj2[i].push_back(u.first);
            }
        }
    }
    for (int i = 0; i< n; i++) {
        if (!visited[i]) {
            dfs(i, 0);
        }
    }
    cout << small << endl;
    for (int i = 0; i< n; i++) {
        if (ans[i]==0) {
            cout << 'B';
        } else {
            cout << 'D';
        }
    }
    cout << endl;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t=1;
    //cin >> t;
    while (t--) {
        solve();
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...