| 18452 | 2025-10-22 20:49:09 | ubormaci | Városnézés | cpp17 | Elfogadva 80/80 | 17ms | 3204 KiB |
#include <iostream>
#include <algorithm> // for sort, mainly
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <array>
#include <string>
#include <cstdio>
#include <iterator>
#include <unordered_set>
#include <cstdint> // for int64_t, int32_t, etc
#include <queue>
#include <stack>
#include <deque>
#include <numeric> // gcd, lcm
#include <fstream>
#include <bitset> // for bitset
#include <iomanip>
#include <cassert> // for set with custom ordering
#include <type_traits> // for set with custom ordering
#include <utility> // for swap, forward, etc
using namespace std;
#pragma GCC optimize("O2")
// #pragma GCC optimize("O1","O2","O3","Ofast","unroll-loops")
//#pragma GCC target("sse","sse2","sse3","sse4.1","sse4.2","avx","avx2","fma")
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cout << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cout << ' ' << H; dbg_out(T...); }
#ifdef LOCAL
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif
/*
*
* notes:
*
* int64_t
* stoi(string s) -> string to int
* to_string() -> int (or else) to string
*
* vector declaration:
* vector<ll> v(n, 0)
* vector<vector<ll>> v(n, vector<ll>(n, 0));
*
* {if statement} ? {truth value} : {false value}
*
* set lower bound/upper bound:
* // . . . m1 . . . d . . . . m2
* auto m1_it = b.lower_bound(d);
* advance(m1_it, -1);
* m1 = *m1_it;
* m2 = *b.upper_bound(d);
*
* #ifdef LOCAL
* freopen("in.txt","r",stdin);
* freopen("out.txt","w",stdout);
* #endif
*
* constexpr auto lcm(auto x, auto... xs)
* {
* return ((x = std::lcm(x, xs)), ...);
* }
*
* std::gcd(int a, int b)
*
* cout << setprecision(n);
*
* set with custom ordering
* set<ll, decltype(&cmp)> qu(cmp);
*
*/
typedef int64_t ll;
void solve() {
ll n, m;
cin >> n >> m;
vector<ll> dp(n+1, 0);
vector<ll> v(n+1, 0);
vector<vector<ll>> out(n+1);
vector<vector<ll>> in(n+1);
vector<ll> ind(n+1, 0); // indegree
for(ll i = 1; i <= n; i++) {
cin >> v[i];
}
for(ll i = 0; i < m; i++) {
ll from, to;
cin >> from >> to;
out[from].push_back(to);
ind[to]++;
in[to].push_back(from);
}
queue<ll> q;
// check if connected
q.push(1);
bool nvis = false;
vector<bool> vis(n+1, false);
while(!q.empty()) {
ll curr = q.front();
q.pop();
if(curr == n) {
nvis = true;
}
for(const auto & x : out[curr]) {
if(vis[x] == false) {
vis[x] = true;
q.push(x);
}
}
}
if(nvis == false){
cout << "-1";
return;
}
vector<ll> ts(n, 0);
ll tind = 0;
for(ll i = 1; i <= n; i++) {
if(ind[i] == 0) {
q.push(i);
}
}
while(!q.empty()) {
ll curr = q.front();
q.pop();
ts[tind] = curr;
tind++;
for(const auto & x : out[curr]) {
ind[x]--;
if(ind[x] == 0) {
q.push(x);
}
}
}
//cerr << "\nts=" << ts;
vector<ll> p(n+1, -1);
ll mxnode = -1;
dp[1] = v[1];
for(const auto & node : ts) {
ll mx = 0;
ll parent = -1;
for(const auto & here : in[node]) {
if(dp[here] > mx) {
mx = dp[here];
parent = here;
}
}
p[node] = parent;
if(mx > 0) {
dp[node] = mx + v[node];
}
}
//cerr << "\ndp=" << dp;
ll mxdp = dp[n];
vector<ll> res;
ll curr = n;
while(curr != -1) {
res.push_back(curr);
curr = p[curr];
}
reverse(res.begin(), res.end());
cout << mxdp << "\n";
for(const auto & x : res) {
cout << x << " ";
}
}
int main()
{
std::ios_base::sync_with_stdio(false);
//cin.tie(nullptr);
//cout.tie(nullptr);
solve();
return 0;
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| subtask2 | 20/20 | ||||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 1ms | 512 KiB | ||||
| 4 | Elfogadva | 1ms | 500 KiB | ||||
| 5 | Elfogadva | 4ms | 820 KiB | ||||
| 6 | Elfogadva | 2ms | 564 KiB | ||||
| 7 | Elfogadva | 6ms | 1332 KiB | ||||
| 8 | Elfogadva | 6ms | 1472 KiB | ||||
| 9 | Elfogadva | 1ms | 500 KiB | ||||
| 10 | Elfogadva | 9ms | 2328 KiB | ||||
| 11 | Elfogadva | 1ms | 428 KiB | ||||
| 12 | Elfogadva | 1ms | 316 KiB | ||||
| subtask3 | 25/25 | ||||||
| 13 | Elfogadva | 1ms | 316 KiB | ||||
| 14 | Elfogadva | 1ms | 316 KiB | ||||
| 15 | Elfogadva | 1ms | 316 KiB | ||||
| 16 | Elfogadva | 1ms | 500 KiB | ||||
| 17 | Elfogadva | 1ms | 316 KiB | ||||
| 18 | Elfogadva | 1ms | 316 KiB | ||||
| 19 | Elfogadva | 1ms | 316 KiB | ||||
| 20 | Elfogadva | 1ms | 316 KiB | ||||
| 21 | Elfogadva | 1ms | 316 KiB | ||||
| 22 | Elfogadva | 2ms | 564 KiB | ||||
| 23 | Elfogadva | 1ms | 564 KiB | ||||
| 24 | Elfogadva | 2ms | 564 KiB | ||||
| 25 | Elfogadva | 2ms | 316 KiB | ||||
| 26 | Elfogadva | 2ms | 564 KiB | ||||
| 27 | Elfogadva | 3ms | 564 KiB | ||||
| 28 | Elfogadva | 14ms | 1588 KiB | ||||
| 29 | Elfogadva | 3ms | 576 KiB | ||||
| 30 | Elfogadva | 16ms | 1852 KiB | ||||
| 31 | Elfogadva | 8ms | 1504 KiB | ||||
| 32 | Elfogadva | 17ms | 2260 KiB | ||||
| 33 | Elfogadva | 6ms | 1844 KiB | ||||
| subtask4 | 20/20 | ||||||
| 34 | Elfogadva | 1ms | 316 KiB | ||||
| 35 | Elfogadva | 1ms | 316 KiB | ||||
| 36 | Elfogadva | 1ms | 500 KiB | ||||
| 37 | Elfogadva | 1ms | 512 KiB | ||||
| 38 | Elfogadva | 1ms | 316 KiB | ||||
| 39 | Elfogadva | 1ms | 316 KiB | ||||
| 40 | Elfogadva | 1ms | 316 KiB | ||||
| 41 | Elfogadva | 1ms | 420 KiB | ||||
| 42 | Elfogadva | 1ms | 316 KiB | ||||
| 43 | Elfogadva | 1ms | 316 KiB | ||||
| 44 | Elfogadva | 1ms | 508 KiB | ||||
| 45 | Elfogadva | 1ms | 508 KiB | ||||
| 46 | Elfogadva | 1ms | 316 KiB | ||||
| 47 | Elfogadva | 1ms | 576 KiB | ||||
| 48 | Elfogadva | 1ms | 376 KiB | ||||
| 49 | Elfogadva | 1ms | 508 KiB | ||||
| 50 | Elfogadva | 1ms | 316 KiB | ||||
| 51 | Elfogadva | 1ms | 316 KiB | ||||
| 52 | Elfogadva | 1ms | 316 KiB | ||||
| 53 | Elfogadva | 1ms | 316 KiB | ||||
| 54 | Elfogadva | 1ms | 316 KiB | ||||
| 55 | Elfogadva | 1ms | 316 KiB | ||||
| 56 | Elfogadva | 1ms | 328 KiB | ||||
| 57 | Elfogadva | 1ms | 316 KiB | ||||
| 58 | Elfogadva | 1ms | 316 KiB | ||||
| 59 | Elfogadva | 1ms | 316 KiB | ||||
| 60 | Elfogadva | 1ms | 316 KiB | ||||
| 61 | Elfogadva | 1ms | 316 KiB | ||||
| 62 | Elfogadva | 1ms | 316 KiB | ||||
| 63 | Elfogadva | 1ms | 316 KiB | ||||
| 64 | Elfogadva | 1ms | 316 KiB | ||||
| 65 | Elfogadva | 1ms | 316 KiB | ||||
| 66 | Elfogadva | 1ms | 508 KiB | ||||
| subtask5 | 15/15 | ||||||
| 67 | Elfogadva | 1ms | 316 KiB | ||||
| 68 | Elfogadva | 1ms | 316 KiB | ||||
| 69 | Elfogadva | 1ms | 512 KiB | ||||
| 70 | Elfogadva | 1ms | 500 KiB | ||||
| 71 | Elfogadva | 4ms | 820 KiB | ||||
| 72 | Elfogadva | 2ms | 564 KiB | ||||
| 73 | Elfogadva | 6ms | 1332 KiB | ||||
| 74 | Elfogadva | 6ms | 1472 KiB | ||||
| 75 | Elfogadva | 1ms | 500 KiB | ||||
| 76 | Elfogadva | 9ms | 2328 KiB | ||||
| 77 | Elfogadva | 1ms | 428 KiB | ||||
| 78 | Elfogadva | 1ms | 316 KiB | ||||
| 79 | Elfogadva | 1ms | 316 KiB | ||||
| 80 | Elfogadva | 1ms | 316 KiB | ||||
| 81 | Elfogadva | 1ms | 316 KiB | ||||
| 82 | Elfogadva | 1ms | 500 KiB | ||||
| 83 | Elfogadva | 1ms | 316 KiB | ||||
| 84 | Elfogadva | 1ms | 316 KiB | ||||
| 85 | Elfogadva | 1ms | 316 KiB | ||||
| 86 | Elfogadva | 1ms | 316 KiB | ||||
| 87 | Elfogadva | 1ms | 316 KiB | ||||
| 88 | Elfogadva | 2ms | 564 KiB | ||||
| 89 | Elfogadva | 1ms | 564 KiB | ||||
| 90 | Elfogadva | 2ms | 564 KiB | ||||
| 91 | Elfogadva | 2ms | 316 KiB | ||||
| 92 | Elfogadva | 2ms | 564 KiB | ||||
| 93 | Elfogadva | 3ms | 564 KiB | ||||
| 94 | Elfogadva | 14ms | 1588 KiB | ||||
| 95 | Elfogadva | 3ms | 576 KiB | ||||
| 96 | Elfogadva | 16ms | 1852 KiB | ||||
| 97 | Elfogadva | 8ms | 1504 KiB | ||||
| 98 | Elfogadva | 17ms | 2260 KiB | ||||
| 99 | Elfogadva | 6ms | 1844 KiB | ||||
| 100 | Elfogadva | 1ms | 316 KiB | ||||
| 101 | Elfogadva | 1ms | 500 KiB | ||||
| 102 | Elfogadva | 1ms | 512 KiB | ||||
| 103 | Elfogadva | 1ms | 316 KiB | ||||
| 104 | Elfogadva | 1ms | 316 KiB | ||||
| 105 | Elfogadva | 1ms | 316 KiB | ||||
| 106 | Elfogadva | 1ms | 420 KiB | ||||
| 107 | Elfogadva | 1ms | 316 KiB | ||||
| 108 | Elfogadva | 1ms | 316 KiB | ||||
| 109 | Elfogadva | 1ms | 508 KiB | ||||
| 110 | Elfogadva | 1ms | 508 KiB | ||||
| 111 | Elfogadva | 1ms | 316 KiB | ||||
| 112 | Elfogadva | 1ms | 576 KiB | ||||
| 113 | Elfogadva | 1ms | 376 KiB | ||||
| 114 | Elfogadva | 1ms | 508 KiB | ||||
| 115 | Elfogadva | 1ms | 316 KiB | ||||
| 116 | Elfogadva | 1ms | 316 KiB | ||||
| 117 | Elfogadva | 1ms | 316 KiB | ||||
| 118 | Elfogadva | 1ms | 316 KiB | ||||
| 119 | Elfogadva | 1ms | 316 KiB | ||||
| 120 | Elfogadva | 1ms | 316 KiB | ||||
| 121 | Elfogadva | 1ms | 328 KiB | ||||
| 122 | Elfogadva | 1ms | 316 KiB | ||||
| 123 | Elfogadva | 1ms | 316 KiB | ||||
| 124 | Elfogadva | 1ms | 316 KiB | ||||
| 125 | Elfogadva | 1ms | 316 KiB | ||||
| 126 | Elfogadva | 1ms | 316 KiB | ||||
| 127 | Elfogadva | 1ms | 316 KiB | ||||
| 128 | Elfogadva | 1ms | 316 KiB | ||||
| 129 | Elfogadva | 1ms | 316 KiB | ||||
| 130 | Elfogadva | 1ms | 316 KiB | ||||
| 131 | Elfogadva | 1ms | 508 KiB | ||||
| 132 | Elfogadva | 3ms | 708 KiB | ||||
| 133 | Elfogadva | 2ms | 564 KiB | ||||
| 134 | Elfogadva | 3ms | 564 KiB | ||||
| 135 | Elfogadva | 2ms | 500 KiB | ||||
| 136 | Elfogadva | 2ms | 316 KiB | ||||
| 137 | Elfogadva | 2ms | 316 KiB | ||||
| 138 | Elfogadva | 2ms | 316 KiB | ||||
| 139 | Elfogadva | 2ms | 564 KiB | ||||
| 140 | Elfogadva | 4ms | 1016 KiB | ||||
| 141 | Elfogadva | 2ms | 660 KiB | ||||
| 142 | Elfogadva | 6ms | 1484 KiB | ||||
| 143 | Elfogadva | 7ms | 1548 KiB | ||||
| 144 | Elfogadva | 8ms | 1844 KiB | ||||
| 145 | Elfogadva | 6ms | 1332 KiB | ||||
| 146 | Elfogadva | 13ms | 3204 KiB | ||||
| 147 | Elfogadva | 10ms | 2604 KiB | ||||
| 148 | Elfogadva | 10ms | 1844 KiB | ||||
| 149 | Elfogadva | 7ms | 1132 KiB | ||||