Submission #169325

# Submission time Handle Problem Language Result Execution time Memory
169325 2019-12-19T18:21:46 Z pr3pony Programming Contest (POI11_pro) C++14
100 / 100
119 ms 3276 KB
#include <bits/stdc++.h>
using namespace std;
const int N = 505;
vector<int> gx[N];
int my[N];
int vy[N], vcnt;
bool dead[N];
int cnt[N];
bool dfs(int x)
{
    for (const int & y : gx[x]) {
        if (vy[y] == vcnt)
            continue;
        vy[y] = vcnt;
        if (!my[y] || dfs(my[y])) {
            my[y] = x;
            return true;
        }
    }
    return false;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, m, r, t, k;
    cin >> n >> m >> r >> t >> k;
    vector<pair<int,int>> vs;
    for (int i = 0; i < k; ++i) {
        int a, b;
        cin >> a >> b;
        gx[a].push_back(b);
        int w = gx[a].size() * r;
        if (w <= t)
            vs.emplace_back(w, a);
    }
    sort(begin(vs), end(vs));
    int tot = 0, mat = 0;
    for (auto tdd : vs) {
        int w, u;
        tie(w, u) = tdd;
        if (dead[u])
            continue;
        ++vcnt;
        if (dfs(u))
            tot += w, ++mat;
        else
            dead[u] = true;
    }
    cout << mat << ' ' << tot << '\n';
    for (int i = 1; i <= m; ++i)
        if (my[i])
            cout << my[i] << ' ' << i << ' ' << cnt[my[i]]++ * r << '\n';
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 3 ms 504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 632 KB Output is correct
2 Correct 11 ms 504 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 40 ms 1644 KB Output is correct
2 Correct 40 ms 1660 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 82 ms 1516 KB Output is correct
2 Correct 25 ms 1108 KB Output is correct
3 Correct 20 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 113 ms 1852 KB Output is correct
2 Correct 58 ms 1488 KB Output is correct
3 Correct 6 ms 404 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 10 ms 632 KB Output is correct
2 Correct 16 ms 1400 KB Output is correct
3 Correct 119 ms 2600 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 92 ms 2424 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 3 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 760 KB Output is correct
2 Correct 72 ms 3276 KB Output is correct
3 Correct 2 ms 376 KB Output is correct