結果
問題 | No.92 逃走経路 |
ユーザー |
|
提出日時 | 2014-12-07 19:45:56 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 206 ms / 5,000 ms |
コード長 | 1,511 bytes |
コンパイル時間 | 1,270 ms |
コンパイル使用メモリ | 172,228 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-11 16:16:55 |
合計ジャッジ時間 | 3,138 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define all(c) (c).begin(),(c).end()#define rrep(i,n) for(int i=(int)(n)-1;i>=0;i--)#define REP(i,m,n) for(int i=(int)(m);i<(int)(n);i++)#define rep(i,n) REP(i,0,n)#define iter(c) __typeof((c).begin())#define tr(it,c) for(iter(c) it=(c).begin();it!=(c).end();it++)#define pb(a) push_back(a)#define rd(a) cin>>(a)#define RD(a,b) cin>>(a)>>(b)#define pr(a) cout<<(a)<<endl#define PR(a,b) cout<<(a)<<" "<<(b)<<endl#define F first#define S second#define ll long longbool check(int n,int m,int x,int y){return (x<0||x>=n||y<0||y>=m)?false:true;}const ll MAX=1000000007,MAXL=1LL<<60,dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};typedef pair<ll,ll> P;int main() {int n,m,t;cin >> n >> m >> t;vector<P> v[n+1];rep(i,m) {int x,y,z;cin >> x >> y >> z;v[x].pb(P(y,z));v[y].pb(P(x,z));}int a[t];rep(i,t) cin >> a[i];set<int> ans;REP(i,1,n+1) {queue<P> que;que.push(P(i,0));bool u[n+1][t+1];memset(u,false,sizeof(u));u[i][0]=true;while(!que.empty()) {P p=que.front();que.pop();int x=p.F,k=p.S;if(k==t) {ans.insert(x);continue;}rep(j,v[x].size()) {if(v[x][j].S==a[k] && !u[v[x][j].F][k+1]) {u[v[x][j].F][k+1]=true;que.push(P(v[x][j].F,k+1));}}}}pr(ans.size());tr(it,ans) {if(it!=ans.begin()) cout << " ";cout << *it;}cout << endl;return 0;}