提出 #43876882
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
vector<bool> seen, finished;
// サイクル復元のための情報
int pos = -1; // サイクル中に含まれる頂点 pos
stack<int> hist; // 訪問履歴
void dfs(const Graph &G, int v, int p) {
seen[v] = true;
hist.push(v);
//cout<<v<<endl;
for (auto nv : G[v]) {
//if (nv == p) continue; // 逆流を禁止する
// 完全終了した頂点はスルー
if (finished[nv]) continue;
// サイクルを検出
if (seen[nv] && !finished[nv]) {
pos = nv;
return;
}
// 再帰的に探索
dfs(G, nv, v);
// サイクル検出したならば真っ直ぐに抜けていく
if (pos != -1) return;
}
hist.pop();
finished[v] = true;
}
int main() {
// 頂点数 (サイクルを一つ含むグラフなので辺数は N で確定)
int N; cin >> N;
// グラフ入力受取
Graph G(N);
int x[N];
for (int i = 0; i < N; ++i) {
int a;
cin>>a;
x[i]=a;
a--;
G[i].push_back(a);
}
//cout<<G[0].at(0)<<endl;
//cout<<G[1].at(0)<<endl;
// 探索
seen.assign(N, false), finished.assign(N, false);
pos = -1;
dfs(G, 0, -1);
// サイクルを復元
set<int> cycle;
vector<int> ans;
while (!hist.empty()) {
int t = hist.top();
ans.push_back(t+1);
cycle.insert(t);
hist.pop();
if (t == pos) break;
}
int ans1=ans.size();
cout<<ans1<<endl;
int now=0;
int pt=ans[now];
cout<<pt;
for(int i=0;i<ans1-1;i++){
cout<<" ";
pt=x[pt-1];
cout<<pt;
}
cout<<endl;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - Find it! |
| ユーザ | chacoder |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 350 |
| コード長 | 1755 Byte |
| 結果 | AC |
| 実行時間 | 208 ms |
| メモリ | 44004 KiB |
コンパイルエラー
./Main.cpp: In function ‘void dfs(const Graph&, int, int)’:
./Main.cpp:11:37: warning: unused parameter ‘p’ [-Wunused-parameter]
11 | void dfs(const Graph &G, int v, int p) {
| ~~~~^
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 350 / 350 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | 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 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample_01.txt | AC | 8 ms | 3484 KiB |
| sample_02.txt | AC | 2 ms | 3508 KiB |
| sample_03.txt | AC | 2 ms | 3468 KiB |
| test_01.txt | AC | 2 ms | 3456 KiB |
| test_02.txt | AC | 3 ms | 3620 KiB |
| test_03.txt | AC | 2 ms | 3564 KiB |
| test_04.txt | AC | 2 ms | 3568 KiB |
| test_05.txt | AC | 2 ms | 3560 KiB |
| test_06.txt | AC | 2 ms | 3620 KiB |
| test_07.txt | AC | 3 ms | 3556 KiB |
| test_08.txt | AC | 2 ms | 3460 KiB |
| test_09.txt | AC | 2 ms | 3400 KiB |
| test_10.txt | AC | 2 ms | 3512 KiB |
| test_11.txt | AC | 2 ms | 3396 KiB |
| test_12.txt | AC | 3 ms | 3396 KiB |
| test_13.txt | AC | 3 ms | 3456 KiB |
| test_14.txt | AC | 2 ms | 3400 KiB |
| test_15.txt | AC | 2 ms | 3396 KiB |
| test_16.txt | AC | 2 ms | 3568 KiB |
| test_17.txt | AC | 2 ms | 3556 KiB |
| test_18.txt | AC | 2 ms | 3556 KiB |
| test_19.txt | AC | 65 ms | 14884 KiB |
| test_20.txt | AC | 64 ms | 15004 KiB |
| test_21.txt | AC | 65 ms | 14948 KiB |
| test_22.txt | AC | 65 ms | 15096 KiB |
| test_23.txt | AC | 64 ms | 14948 KiB |
| test_24.txt | AC | 67 ms | 14948 KiB |
| test_25.txt | AC | 65 ms | 14884 KiB |
| test_26.txt | AC | 64 ms | 15044 KiB |
| test_27.txt | AC | 65 ms | 15052 KiB |
| test_28.txt | AC | 63 ms | 14948 KiB |
| test_29.txt | AC | 63 ms | 14944 KiB |
| test_30.txt | AC | 64 ms | 14948 KiB |
| test_31.txt | AC | 208 ms | 43836 KiB |
| test_32.txt | AC | 207 ms | 43772 KiB |
| test_33.txt | AC | 204 ms | 44004 KiB |
| test_34.txt | AC | 202 ms | 43940 KiB |
| test_35.txt | AC | 197 ms | 43772 KiB |
| test_36.txt | AC | 116 ms | 30456 KiB |
| test_37.txt | AC | 108 ms | 27632 KiB |
| test_38.txt | AC | 80 ms | 19388 KiB |
| test_39.txt | AC | 68 ms | 16464 KiB |
| test_40.txt | AC | 110 ms | 26280 KiB |
| test_41.txt | AC | 97 ms | 23304 KiB |
| test_42.txt | AC | 77 ms | 18908 KiB |
| test_43.txt | AC | 86 ms | 22336 KiB |
| test_44.txt | AC | 67 ms | 16084 KiB |
| test_45.txt | AC | 71 ms | 17156 KiB |
| test_46.txt | AC | 93 ms | 28612 KiB |
| test_47.txt | AC | 100 ms | 34156 KiB |
| test_48.txt | AC | 70 ms | 17948 KiB |
| test_49.txt | AC | 61 ms | 15008 KiB |
| test_50.txt | AC | 64 ms | 14948 KiB |
| test_51.txt | AC | 63 ms | 15008 KiB |