結果
問題 | No.1400 すごろくで世界旅行 |
ユーザー |
![]() |
提出日時 | 2021-02-19 23:58:50 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2,263 ms / 3,153 ms |
コード長 | 1,913 bytes |
コンパイル時間 | 2,354 ms |
コンパイル使用メモリ | 198,264 KB |
最終ジャッジ日時 | 2025-01-19 02:00:05 |
ジャッジサーバーID (参考情報) |
judge1 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n) for(int i = 0; i < (n); ++i)#define srep(i,s,t) for (int i = s; i < t; ++i)#define drep(i,n) for(int i = (n)-1; i >= 0; --i)using namespace std;typedef long long int ll;typedef pair<int,int> P;#define yn {puts("Yes");}else{puts("No");}#define MAX_N 200005const ll INF = 1001001001001001001;int main() {srand((unsigned) time(NULL));clock_t start,end;start = clock();end = clock();ll n, d;cin >> n >> d;int e[n][n];string s[n];rep(i,n) cin >> s[i];rep(i,n)rep(j,n) e[i][j] = s[i][j] - '0';int ok = 1;rep(i,n){ll odd[n], even[n];rep(j,n){odd[j] = INF;even[j] = INF;}even[i] = 0;queue<int> que;que.push(i);while(que.size()){int x = que.front() % n;int y = que.front() / n;que.pop();rep(j,n){if(e[x][j]){if(y == 0){if(odd[j] > even[x]+1){odd[j] = even[x] + 1;que.push(j+n);}}else{if(even[j] > odd[x]+1){even[j] = odd[x] + 1;que.push(j);}}}}}if(d%2==0){rep(j,n){if(even[j] > d){ok = 0;break;}}}else{rep(j,n){if(odd[j] > d){ok = 0;break;}}}if(ok == 0) break;end = clock();if((double)(end-start)/CLOCKS_PER_SEC > 2.0) break;}if(ok) yn;return 0;}