1 条题解
-
0
当n比较小时,直接模拟即可。当n比较大时,直接模拟会超时,分析可以发现,由于n只有500,因此A批评B只有不超过250000种可能,一旦X批评Y这件事第二次发生,那么这之后的批评都会重复之前的顺序,即产生循环,因此可以取模处理。
核心代码
#include<bits/stdc++.h> int n,a[505][505],vis[505][505]; long long m; void input() { scanf("%d%lld",&n,&m); for(int i = 1;i <= n;i++) for(int j = 1;j <= n;j++) scanf("%d",&a[i][j]); } void dfs(int x,int y,long long k) { if(vis[x][y])//前面访问过了,可以取模处理 m = (m - k) % (k - vis[x][y]) + k; if(k == m) { printf("%d",x); exit(0); } vis[x][y] = k; dfs(y,a[y][x],k + 1); } int main() { input(); dfs(1,2,1); return 0; }
- 1
信息
- ID
- 910
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 12
- 已通过
- 7
- 上传者