QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#309072 | #8136. Rebellious Edge | ucup-team1055# | WA | 46ms | 3792kb | C++20 | 2.1kb | 2024-01-20 14:36:53 | 2024-01-20 14:36:53 |
Judging History
answer
#include <bits/stdc++.h>
#define rep(i,s,n) for(int i = int(s); i < int(n); i++)
#define rrep(i,s,n) for(int i = int(n) - 1; i >= int(s); i--)
#define all(v) (v).begin(), (v).end()
using ll = long long;
using ld = long double;
using ull = unsigned long long;
template<class T>
bool chmin(T &a, T b) {
if(a <= b) return false;
a = b;
return true;
}
template<class T>
bool chmax(T &a, T b) {
if(a >= b) return false;
a = b;
return true;
}
using pil = std::pair<int,ll>;
const ll linf = 1e17;
void solve(){
int n,m;
std::cin >> n >> m;
std::vector rg(n, std::vector<pil>());
std::tuple<int,int,ll> rev_edge;
rep(i,0,m) {
int u,v;
ll w;
std::cin >> u >> v >> w;
u--; v--;
if(u < v) rg[v].emplace_back(u, w);
else rev_edge = {u, v, w};
}
rep(i,0,n) {
std::sort(all(rg[i]));
}
ll ans = linf;
std::vector<ll> mc(n, linf);
mc[0] = 0;
{
ll ret = 0;
rep(i,1,n) {
ll min = linf;
for(auto [u, w]: rg[i]) {
chmin(min, w);
}
ret += min;
mc[i] = min;
}
chmin(ans, ret);
}
{
std::vector<ll> sum(n+1, 0);
rep(i,0,n) {
sum[i+1] = sum[i] + mc[i];
}
auto [u,v,w] = rev_edge;
ll ret = sum[v] + w;
ll min = linf;
std::vector<ll> dp(n, linf);
dp[u] = 0;
rrep(i,v+1,u+1) {
for(auto [nv, c]: rg[i]) {
if(nv == v) continue;
else if(nv < v) {
chmin(min, dp[i] + c + sum[i] - sum[v+1]);
}
else {
chmin(dp[nv], dp[i] + c + sum[i] - sum[nv + 1]);
}
}
}
ret += min;
chmin(ans, ret);
}
std::cout << ans << '\n';
}
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
int t; std::cin >> t;
while (t--){
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3792kb
input:
3 5 6 1 2 4 1 3 2 2 3 0 3 4 1 4 5 1 5 2 1 4 4 1 2 4 1 3 6 1 4 8 4 2 1000000 3 3 1 2 100 2 1 10 2 3 1000
output:
5 18 1100
result:
ok 3 number(s): "5 18 1100"
Test #2:
score: -100
Wrong Answer
time: 46ms
memory: 3592kb
input:
50000 4 5 2 4 998973548 2 3 501271695 4 1 778395982 1 4 32454891 1 2 757288934 4 5 1 4 720856669 2 3 665098951 3 4 407461517 2 1 866914401 1 2 457859826 4 5 1 2 75288664 1 4 624893594 3 2 458973866 2 4 769074655 2 3 834773751 4 5 2 3 237060634 2 4 297307882 3 4 200383586 1 2 42856502 3 1 16574713 4 ...
output:
1291015520 1530420294 1534956009 480300722 1366795927 1541095843 2493849488 858095911 1034153425 793861088 570428617 1051598350 612891589 1265994009 517769091 1678219738 1556463491 93634961 960978736 984886788 1696503797 1002892611 1969660290 1431417780 1515267731 977157479 1937478556 654475526 1401...
result:
wrong answer 11th numbers differ - expected: '605832428', found: '570428617'