結果
問題 |
No.92 逃走経路
|
ユーザー |
![]() |
提出日時 | 2018-08-23 21:22:44 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 47 ms / 5,000 ms |
コード長 | 1,221 bytes |
コンパイル時間 | 2,529 ms |
コンパイル使用メモリ | 165,036 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-27 03:04:14 |
合計ジャッジ時間 | 2,506 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include "bits/stdc++.h" using namespace std; #define ll long long int #define rep(i,n) for( int i = 0; i < n; i++ ) #define rrep(i,n) for( int i = n; i >= 0; i-- ) #define REP(i,s,t) for( int i = s; i <= t; i++ ) #define RREP(i,s,t) for( int i = s; i >= t; i-- ) #define dump(x) cerr << #x << " = " << (x) << endl; #define INF 2000000000 #define mod 1000000007 #define INF2 1000000000000000000 #define int long long vector<int> k; int N, M, K; vector<pair<int, int>> d[101]; bool dfs(int a, int cnt) { //cout << a << " " << cnt << endl; if (cnt == K) return true; rep(i, d[a].size()) { if (d[a][i].second == k[cnt]) { if (dfs(d[a][i].first, cnt + 1)) return true; } } return false; } signed main(void) { cin.tie(0); ios::sync_with_stdio(false); cin >> N >> M >> K; rep(i, M) { int a, b, c; cin >> a >> b >> c; d[a].push_back({ b, c }); d[b].push_back({ a, c }); } int x[K] = {}; rep(i, K) { int r; cin >> r; x[i] = r; } rrep(i, K - 1) { k.push_back(x[i]); } vector<int> ans; rep(i, N) { if (dfs(i + 1, 0)) ans.push_back(i + 1); } cout << ans.size() << endl; rep(i, ans.size()) { if (i != 0) cout << " "; cout << ans[i]; } cout << endl; return 0; }