http://acm.sgu.ru/problem.php?contest=0&problem=103

有条件限制的最短路问题,当且仅当点的颜色一样时可以通行否则需要等到符合条件时才可以通行。等待的时间与通行时间之和用于判断松弛。

AC代码:

#include <queue>
#include <stack>
#include <vector>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>using namespace std;const int MAXV = 310;
const int MAXE = 14010;
const int INF = 0x3f3f3f3f;typedef pair <int, int> Pii;vector <Pii> vt[MAXV];
struct NODE{int c, rt, bt, pt;int color(int t){if(t < rt)  return c;t -= rt;t %= (bt + pt);if(c == 1){if(t < bt)  return c^1;return c;}if(t < pt)  return c^1;return c;}
}node[MAXV];queue <int> Q;
int dis[MAXV],vis[MAXV],pre[MAXV];void SPFA(int st){memset(dis, 0x3f, sizeof(dis));memset(vis, 0, sizeof(vis));memset(pre, -1, sizeof(pre));dis[st] = 0, vis[st] = 1;Q.push(st);while(!Q.empty()){int u = Q.front();Q.pop();vis[u] = 0;int t = dis[u];for(int i=0; i<vt[u].size(); i++){int v = vt[u][i].first;int w = vt[u][i].second;int T = t;while(t + 100 >= T && node[u].color(T) != node[v].color(T)) T++;if(T > t + 100) continue;if(T + w < dis[v]){dis[v] = T + w;pre[v] = u;if(vis[v])  continue;Q.push(v);vis[v] = 1;}}}
}int main(){int st,ed,N,M;scanf("%d%d%d%d",&st,&ed,&N,&M);for(int i=1; i<=N; i++){char str[10];scanf("%s",str);if(str[0] == 'B')   node[i].c = 0;else    node[i].c = 1;scanf("%d%d%d",&node[i].rt,&node[i].bt,&node[i].pt);}for(int i=0; i<M; i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);vt[a].push_back(Pii(b,c));vt[b].push_back(Pii(a,c));}SPFA(st);if(dis[ed] == 0x3f3f3f3f){cout << 0 << endl;return 0;}printf("%d\n",dis[ed]);stack <int> S;while(ed != -1){S.push(ed);ed = pre[ed];}printf("%d",S.top()); S.pop();while(S.size()){printf(" %d",S.top());S.pop();}printf("\n");///system("pause");return 0;
}

SGU 103 Traffic Lights相关推荐

  1. SGU 103 Traffic Lights 翻译 题解

    103. 交通灯 每个测试点:0.5s 内存限制:4096KB 在Dingilville市城市交通的安排很不寻常,公路连接着路口,在两个不同的路口之间最多有一条公路连接,没有公路会连接一个路口自身.正 ...

  2. SGU 103 Traffic Lights【最短路】

    题目链接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=16530 题意: 给定每个点最初的颜色,最初颜色持续时间,以 ...

  3. SGU 103 Traffic Lights(最短路)

    这题不错,是一个最短路,但是中间有一个限制条件,就是等待时间 首先先看一下为什么仍然满足最短路 因为最短路肯定是每个结点求出最早到达的时间,那么其实不管有没等待,从队头取出去转移的肯定是最早的时间,仍 ...

  4. [SGU 103] Traffic Lights [最短路]

    现在给你一个城市网络,求从某点到某点的最短路.每个点上都有一个红绿灯,仅有红绿两种颜色,按照某个周期切换,尽在边的两个端点的灯同色时,这条边才可走. 直接用最短路算法即可,走某条路径之前要加上的等待灯 ...

  5. SGU 103 Traffic Lights (最短路)

    题意:http://www.cnblogs.com/yylogo/archive/2011/06/05/SGU-103.html 分析:比通常的最短路问题多了个限制条件,即每个路口的颜色必须相同时才能 ...

  6. 【SGU】103. Traffic Lights 最短路

    传送门:[SGU]103. Traffic Lights 题目大意: 在一个N个点M条边的城市里,每个点上有一个交通灯,交通灯亮B.P颜色,在离开始r的时间内交通灯会亮c颜色(c为B.P中的一种),然 ...

  7. CodeForces刷题C语言:Next Test、Spit Problem、Traffic Lights、Reconnaissance、Borze

    记录洛谷刷题C语言 一.Next Test 题面翻译 题面描述 给出 nnn 个互不相同的整数 aia_iai​ ,从小到大找第一个没有出现过的整数. 输入格式 第一行一个正整数 nnn ,之后是 n ...

  8. Traffic Lights(翻译)

    来源:https://codeforces.com/contest/29/problem/B Traffic Lights A car moves from point A to point B at ...

  9. signature=23e9377f593aff2d118917dcf0d9f6d0,Turning streams in the traffic lights system

    摘要: Observations of a currently functioning in Poland traffic lights system shows a need for it's mo ...

最新文章

  1. Windows下安装python的pip
  2. (34)内核编程基础
  3. lnmp 中的laravel出现白屏的处理办法
  4. AS3中 is,as,typeof的区别 .
  5. SAP Spartacus的API暴露逻辑和index.ts的设计原理 - 什么是所谓的PUBLIC API
  6. Java虚拟机学习集锦是我攒来的,带你碾压面试官!
  7. Martin Odersky Scala编程公开课 第一周作业
  8. bracket 教程
  9. EventBus实现 - 发布订阅 - XML加载
  10. 戴尔部分笔记本存GPU故障
  11. messagedigest 图片加密_MessageDigest来实现数据加密
  12. 怎么写安卓手机脚本_想要挣钱创收 那就用脚本操作手机群控软件啊
  13. ModuleNotFoundError: No module named 'pytz'
  14. 学计算机的看图写话,小老鼠上网看图写话
  15. mac Error: EACCES: permission denied, mkdir './cache'
  16. VMware VMFS分区表恢复
  17. 极域教室老师版,控制同学电脑
  18. 文件包含漏洞——实例
  19. Mac平台配置OpenGL(glut,glew)
  20. Java成员方法getinfo_成员方法

热门文章

  1. Real-Time Correlative Scan Matching 翻译和总结
  2. GJK之判断是否相交
  3. protocol 协议语言介绍
  4. 根据sql语句生成数据库模型pdm文件
  5. 嵌入式 - 存储介质【1】NOR Flash 和 NAND Flash宏观比较
  6. Unity文件导入格式
  7. awd赛题的flag是什么意思_网上说的“立flag”是什么意思?
  8. 神经网络-感知机(8)[matlab]
  9. 推荐一个在线的三维电子地图站点
  10. 2023年海彼特全国幼儿篮球联赛·总决赛圆满落幕