poj 3259
来源:互联网 发布:修改linux文件名夹 编辑:程序博客网 时间:2024/05/18 02:14
写之前先让我吐槽一会:这个程序我从7:00改到现在,6个小时,重新写了好几遍,后来无意间尝试了一下——局部变量重新严格赋值,居然ac了,我***心中。。。。。。
题目大意:
农场里有数个通道,也有虫洞,他们俩的功能是一样的就是进行位置转移,但通道是双向(!!!双向),虫洞单向的。虫洞可以使时间倒转。
现在给出山洞的个数,通道和虫洞的个数以及所需(穿越)的时间,问是否能够进行时间旅行。
思路就是找负环,没什么好说的。但即使找负环我也是砍了好久(英语太差)看不懂,而且通道双向!!!起初位置任意!!!
我的是略次的500Ms的dfs算法
<span style="font-size:12px;"> #include <iostream> using namespace std; char table[80][80]; short vis[80][80]; int main() { int loops=-1; bool flag=1; int n=0,m,s; int ans=0; while(1) { loops=-1; ans=0; flag=1; cin>>n>>m>>s; if(n==0)break; for (int i=1;i<=n;++i) for (int j=1;j<=m;++j) { cin>>table[i][j]; vis[i][j]=0; } int i1=1,j1=s; vis[i1][j1]=1; for(int cnt=2;;cnt++) { int ni=i1,nj=j1; switch(table[i1][j1]) { case 'N':ni--;break; case 'S':ni++;break; case 'W':nj--;break; case 'E':nj++;break; } if(ni<1||nj<1||ni>n||nj>m) { ans=cnt-1; flag=1; break; };; if(vis[ni][nj]!=0) { ans=vis[ni][nj]-1; flag=0; loops=cnt-vis[ni][nj]; break; } else vis[ni][nj]=cnt; i1=ni; j1=nj; } if(flag) printf("%d step(s) to exit\n",ans); else printf("%d step(s) before a loop of %d step(s)\n",ans,loops); } return 0; }</span>其实有更好的bellmanford算法(或者用bfs)
bfs并不打算写,准备明天尝试下bellmanford,今天先睡了。
1 0
- poj 3259
- poj 3259
- poj-3259
- poj 3259
- poj 3259
- poj 3259
- POJ 3259
- poj 3259
- poj.3259
- poj-3259
- POJ 3259
- poj-3259
- poj 3259
- POJ-3259
- poj 3259
- POJ 3259
- poj----3259
- poj 3259
- 【计算机网络】:IP分片详解及例题
- poj 1573
- Docker实战(四):Docker安装JDK
- vim常用命令
- sample_face_group.cpp
- poj 3259
- Activity启动时,与Ams,Wms如何交互
- sql语句技巧(1)
- Java基础之九九乘法表
- Oauth 简介
- Android中Canvas绘图之MaskFilter图文详解(附源码下载)
- P1659 河蟹王国 线段树
- mac中配置android adb环境变量
- LeetCode-001-TwoSum