結果
問題 | No.92 逃走経路 |
ユーザー |
![]() |
提出日時 | 2016-06-21 17:29:35 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 32 ms / 5,000 ms |
コード長 | 1,916 bytes |
コンパイル時間 | 1,008 ms |
コンパイル使用メモリ | 94,408 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-11 18:24:10 |
合計ジャッジ時間 | 1,817 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include<iostream>#include<vector>#include<cassert>#include<string>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cmath>#include<stack>#include<queue>#include<set>#include<map>#include<tuple>#include<numeric>using namespace std;using pii = pair<int,int>;using ll = long long;#define rep(i, j) for(int i=0; i < (int)(j); i++)#define repeat(i, j, k) for(int i = (j); i < (int)(k); i++)#define all(v) v.begin(),v.end()#define debug(x) cerr << #x << " : " << x << endl// vectortemplate<class T> ostream& operator << (ostream &os , const vector<T> &v) {for(const T &t : v) os << "\t" << t; return os << endl;}template<class T> istream& operator >> (istream &is , vector<T> &v) {for(T &a : v) is >> a; return is;}// pairtemplate<class T, class U> ostream& operator << (ostream &os , const pair<T, U> &v) {return os << "<" << v.first << " " << v.second << ">";}bool solve() {int N, M, K; cin >> N >> M >> K;vector<vector<pii>> E(N);map<int, vector<int>> mp;rep(i, M) {int a, b, c; cin >> a >> b >> c;--a; --b;E[a].push_back(make_pair(b, c));E[b].push_back(make_pair(a, c));mp[c].push_back(a);mp[c].push_back(b);}vector<int> D(K); cin >> D;set<int> ans[2];int cnt = 0;ans[cnt].insert(all(mp[D[0]]));repeat(i, 1, K) {ans[cnt^1].clear();for(int now : ans[cnt]) {for(pii nxt : E[now]) {if(nxt.second == D[i]) ans[cnt^1].insert(nxt.first);}}cnt ^= 1;}cout << ans[cnt].size() << endl;for(auto a = ans[cnt].begin(); a != ans[cnt].end(); a++) {if(a != ans[cnt].begin()) cout << " ";cout << *a + 1;}cout << endl;return false;}int main() {cin.tie(0);ios::sync_with_stdio(false);while(solve());return 0;}