bzoj 3890: [Usaco2015 Jan]Meeting Time bfs
来源:互联网 发布:linux 客户端工具 编辑:程序博客网 时间:2024/06/05 04:54
→题目链接←
对于每个点我们维护两个bool数组
vis[0][i][j]=true表示第j时刻Bessie来过点i
vis[0][i][j]=true表示第j时刻Elsie来过点i
然后我们从1号点开始,每当vis[0或1][i][j]==false时就变成true,并放到队列里
最后vis[0][n][1~maxm]与vis[1][n][1~maxm]都为true时,第三维的值就是答案
若不存在就输出IMPOSSIBLE,千万不要输出-1........
代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<queue>using namespace std;struct node{int to,len[2];};struct node1{int now,len;};int n,m;vector<node>v[110];bool vis[2][110][11000];queue<node1>q;int main(){scanf("%d%d",&n,&m);for(int i=0; i<m; i++){int x,y,z1,z2;scanf("%d%d%d%d",&x,&y,&z1,&z2);if(x>y)swap(x,y);node t;t.to=y;t.len[0]=z1;t.len[1]=z2;v[x].push_back(t);}node1 t;t.now=1;t.len=0;q.push(t);vis[0][1][0]=true;vis[1][1][0]=true;while(!q.empty()){node1 t=q.front();q.pop();if(t.now==n)continue;for(int i=0; i<v[t.now].size(); i++){int to=v[t.now][i].to;int len1=v[t.now][i].len[0];if(!vis[0][to][t.len+len1]){vis[0][to][t.len+len1]=true;node1 t1=t;t1.now=to;t1.len+=len1;q.push(t1);}}}t.now=1;t.len=0;q.push(t);while(!q.empty()){node1 t=q.front();q.pop();if(t.now==n)continue;for(int i=0; i<v[t.now].size(); i++){int to=v[t.now][i].to;int len2=v[t.now][i].len[1];if(!vis[1][to][t.len+len2]){vis[1][to][t.len+len2]=true;node1 t1=t;t1.now=to;t1.len+=len2;q.push(t1);}}}for(int i=1; i<=10000; i++){if(vis[0][n][i] && vis[1][n][i]){printf("%d\n",i);return 0;}}printf("IMPOSSIBLE\n");return 0;}
vis[0][i][j]=true表示第j时刻Bessie来过点i
阅读全文
0 0
- bzoj 3890: [Usaco2015 Jan]Meeting Time bfs
- BZOJ 3890 Usaco2015 Jan Meeting Time 拓扑图DP
- BZOJ 3890 Usaco2015 Jan Meeting Time 拓扑排序
- bzoj3890【Usaco2015 Jan】Meeting Time
- bzoj3890 [Usaco2015 Jan]Meeting Time [spfa + A*]
- 【BZOJ3890】【Usaco2015 Jan】Meeting Time 拓扑图简单DP
- BZOJ3890 [Usaco2015 Jan]Meeting Time K短路 Astar || 拓扑DP
- BZOJ 3888: [Usaco2015 Jan]Stampede
- bzoj 3887: [Usaco2015 Jan]Grass Cownoisseur
- BZOJ 3887 [Usaco2015 Jan]Grass Cownoisseur
- BZOJ 【BZOJ3887】【Usaco2015 Jan】Grass Cownoisseur
- bzoj 3889: [Usaco2015 Jan]Cow Routing SPFA
- BZOJ 3887 Usaco2015 Jan Grass Cownoisseur Tarjan+拓扑排序
- BZOJ 3885 Usaco2015 Jan Cow Rectangles 单调队列+二分
- bzoj 3887: [Usaco2015 Jan]Grass Cownoisseur(spfa+tarjan)
- bzoj 3886: [Usaco2015 Jan]Moovie Mooving 状压dp
- BZOJ 3889: [Usaco2015 Jan]Cow Routing 双键值最短路
- BZOJ[3887][Usaco2015 Jan]Grass Cownoisseur Tarjan+拓扑排序
- thrift编写服务器/客户端实现图片传输(c++)
- 人工智能里的数学修炼 | 是什么决定了你的学习算法泛化性能?偏差—方差分解(bias-variance decomposition)
- git基本命令
- react-native的textInput学习中宽自动变小的问题
- spring整合hibernate的初级使用
- bzoj 3890: [Usaco2015 Jan]Meeting Time bfs
- AJAX的使用
- hdu 6156 Palindrome Function(数位dp&&其他)
- Keras学习笔记---保存model文件和载入model文件
- 位运算
- memset的妙用
- mybaties入门
- HDU 1272 小希的迷宫 并查集
- Redis的相关命令