提出 #49107882
ソースコード 拡げる
#include <bits/stdc++.h>
#define sz(c) int((c).size())
#define rep(i, a, b) for (int i = a; i < (int)(b); ++i)
#define per(i, a, b) for (int i = (int)(b)-1; i >= (int)(a); --i)
using ll = long long;
template <typename DiGraph>
DiGraph Transpose(int n, const DiGraph &adj) {
DiGraph rev_adj(n);
for (int v = 0; v < n; ++v)
for (int u : adj[v])
rev_adj[u].push_back(v);
return rev_adj;
}
template <typename DiGraph>
std::vector<int> TopSort(int n, const DiGraph &adj) {
std::vector<int> order;
std::vector<bool> visited(n);
auto DFS = [&](auto &&self, int v) -> void {
visited[v] = true;
for (int u : adj[v])
if (!visited[u])
self(self, u);
order.push_back(v);
};
for (int v = 0; v < n; ++v)
if (!visited[v])
DFS(DFS, v);
std::reverse(order.begin(), order.end());
return order;
}
template <typename DAG>
struct Condensation {
int components_count;
std::vector<int> component;
DAG adj;
};
template <typename DiGraph, typename DAG = DiGraph>
Condensation<DAG> BuildCondensation(int n, const DiGraph &adj) {
Condensation<DAG> result;
result.components_count = 0;
result.component.resize(n);
auto rev_adj = Transpose(n, adj);
std::vector<bool> visited(n);
auto DFS = [&](auto &&self, int v) -> void {
visited[v] = true;
result.component[v] = result.components_count;
for (int u : rev_adj[v])
if (!visited[u])
self(self, u);
};
for (int v : TopSort(n, adj))
if (!visited[v]) {
DFS(DFS, v);
++result.components_count;
}
result.adj.resize(result.components_count);
for (int v = 0; v < n; ++v) {
int vc = result.component[v];
for (int u : adj[v]) {
int uc = result.component[u];
if (vc != uc)
result.adj[vc].push_back(uc);
}
}
for (auto &vec : result.adj) {
std::sort(vec.begin(), vec.end());
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
}
return result;
}
int main() {
std::cin.tie(nullptr);
std::ios_base::sync_with_stdio(false);
int N, M;
std::cin >> N >> M;
std::vector<int> A(N);
for (auto &a : A)
std::cin >> a;
std::vector<std::vector<int>> adj(N);
rep(i, 0, M) {
int u, v;
std::cin >> u >> v;
u--, v--;
if (A[u] <= A[v])
adj[u].push_back(v);
if (A[v] <= A[u])
adj[v].push_back(u);
}
auto condensation = BuildCondensation(N, adj);
const auto &component = condensation.component;
int cc = condensation.components_count;
std::vector<int> dp(cc);
dp[component[0]] = 1;
rep(v, 0, cc) if (dp[v] != 0) {
for (int u : condensation.adj[v])
dp[u] = std::max(dp[u], dp[v] + 1);
}
std::cout << dp[component[N - 1]] << "\n";
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Non-Decreasing Colorful Path |
| ユーザ | ami |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 525 |
| コード長 | 3085 Byte |
| 結果 | AC |
| 実行時間 | 153 ms |
| メモリ | 49916 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 525 / 525 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | hand_01.txt, hand_02.txt, sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt, test_72.txt, test_73.txt, test_74.txt, test_75.txt, test_76.txt, test_77.txt, test_78.txt, test_79.txt, test_80.txt, test_81.txt, test_82.txt, test_83.txt, test_84.txt, test_85.txt, test_86.txt, test_87.txt, test_88.txt, test_89.txt, test_90.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| hand_01.txt | AC | 1 ms | 3524 KiB |
| hand_02.txt | AC | 1 ms | 3516 KiB |
| sample_01.txt | AC | 1 ms | 3528 KiB |
| sample_02.txt | AC | 1 ms | 3516 KiB |
| sample_03.txt | AC | 1 ms | 3456 KiB |
| test_01.txt | AC | 1 ms | 3448 KiB |
| test_02.txt | AC | 132 ms | 49916 KiB |
| test_03.txt | AC | 129 ms | 40148 KiB |
| test_04.txt | AC | 95 ms | 31120 KiB |
| test_05.txt | AC | 20 ms | 8632 KiB |
| test_06.txt | AC | 23 ms | 6912 KiB |
| test_07.txt | AC | 24 ms | 6932 KiB |
| test_08.txt | AC | 25 ms | 6948 KiB |
| test_09.txt | AC | 27 ms | 7064 KiB |
| test_10.txt | AC | 26 ms | 7024 KiB |
| test_11.txt | AC | 8 ms | 4512 KiB |
| test_12.txt | AC | 9 ms | 5720 KiB |
| test_13.txt | AC | 16 ms | 5732 KiB |
| test_14.txt | AC | 20 ms | 5952 KiB |
| test_15.txt | AC | 4 ms | 3820 KiB |
| test_16.txt | AC | 7 ms | 4304 KiB |
| test_17.txt | AC | 15 ms | 5332 KiB |
| test_18.txt | AC | 16 ms | 6136 KiB |
| test_19.txt | AC | 22 ms | 6548 KiB |
| test_20.txt | AC | 3 ms | 3860 KiB |
| test_21.txt | AC | 7 ms | 4292 KiB |
| test_22.txt | AC | 14 ms | 5356 KiB |
| test_23.txt | AC | 20 ms | 5872 KiB |
| test_24.txt | AC | 18 ms | 8932 KiB |
| test_25.txt | AC | 2 ms | 3692 KiB |
| test_26.txt | AC | 10 ms | 4700 KiB |
| test_27.txt | AC | 12 ms | 4916 KiB |
| test_28.txt | AC | 19 ms | 5864 KiB |
| test_29.txt | AC | 20 ms | 6148 KiB |
| test_30.txt | AC | 5 ms | 4384 KiB |
| test_31.txt | AC | 8 ms | 4536 KiB |
| test_32.txt | AC | 13 ms | 5404 KiB |
| test_33.txt | AC | 19 ms | 5992 KiB |
| test_34.txt | AC | 23 ms | 6356 KiB |
| test_35.txt | AC | 2 ms | 3676 KiB |
| test_36.txt | AC | 8 ms | 5024 KiB |
| test_37.txt | AC | 12 ms | 5204 KiB |
| test_38.txt | AC | 16 ms | 5928 KiB |
| test_39.txt | AC | 25 ms | 6888 KiB |
| test_40.txt | AC | 2 ms | 3880 KiB |
| test_41.txt | AC | 74 ms | 14548 KiB |
| test_42.txt | AC | 105 ms | 24468 KiB |
| test_43.txt | AC | 51 ms | 10248 KiB |
| test_44.txt | AC | 84 ms | 22220 KiB |
| test_45.txt | AC | 131 ms | 28896 KiB |
| test_46.txt | AC | 76 ms | 15248 KiB |
| test_47.txt | AC | 64 ms | 13216 KiB |
| test_48.txt | AC | 70 ms | 15660 KiB |
| test_49.txt | AC | 71 ms | 17360 KiB |
| test_50.txt | AC | 48 ms | 9200 KiB |
| test_51.txt | AC | 105 ms | 23724 KiB |
| test_52.txt | AC | 85 ms | 20000 KiB |
| test_53.txt | AC | 102 ms | 28840 KiB |
| test_54.txt | AC | 61 ms | 13464 KiB |
| test_55.txt | AC | 62 ms | 11520 KiB |
| test_56.txt | AC | 97 ms | 31428 KiB |
| test_57.txt | AC | 100 ms | 31508 KiB |
| test_58.txt | AC | 106 ms | 31412 KiB |
| test_59.txt | AC | 99 ms | 31480 KiB |
| test_60.txt | AC | 100 ms | 31464 KiB |
| test_61.txt | AC | 98 ms | 31548 KiB |
| test_62.txt | AC | 104 ms | 31408 KiB |
| test_63.txt | AC | 101 ms | 31380 KiB |
| test_64.txt | AC | 100 ms | 31480 KiB |
| test_65.txt | AC | 102 ms | 31488 KiB |
| test_66.txt | AC | 69 ms | 18872 KiB |
| test_67.txt | AC | 68 ms | 18816 KiB |
| test_68.txt | AC | 69 ms | 18796 KiB |
| test_69.txt | AC | 69 ms | 18988 KiB |
| test_70.txt | AC | 70 ms | 18768 KiB |
| test_71.txt | AC | 69 ms | 18800 KiB |
| test_72.txt | AC | 68 ms | 18816 KiB |
| test_73.txt | AC | 69 ms | 18772 KiB |
| test_74.txt | AC | 70 ms | 18796 KiB |
| test_75.txt | AC | 69 ms | 18892 KiB |
| test_76.txt | AC | 1 ms | 3564 KiB |
| test_77.txt | AC | 1 ms | 3624 KiB |
| test_78.txt | AC | 1 ms | 3592 KiB |
| test_79.txt | AC | 1 ms | 3564 KiB |
| test_80.txt | AC | 1 ms | 3576 KiB |
| test_81.txt | AC | 93 ms | 31124 KiB |
| test_82.txt | AC | 97 ms | 31028 KiB |
| test_83.txt | AC | 98 ms | 31092 KiB |
| test_84.txt | AC | 97 ms | 31112 KiB |
| test_85.txt | AC | 99 ms | 31100 KiB |
| test_86.txt | AC | 124 ms | 40144 KiB |
| test_87.txt | AC | 130 ms | 40112 KiB |
| test_88.txt | AC | 134 ms | 40180 KiB |
| test_89.txt | AC | 153 ms | 40028 KiB |
| test_90.txt | AC | 135 ms | 44620 KiB |