提出 #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
結果
AC × 3
AC × 54
セット名 テストケース
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