现在给你一个城市网络,求从某点到某点的最短路。每个点上都有一个红绿灯,仅有红绿两种颜色,按照某个周期切换,尽在边的两个端点的灯同色时,这条边才可走。

直接用最短路算法即可,走某条路径之前要加上的等待灯的时间。注意如果两个灯交替变换,那这条路时永远不能走的。

#include <cstdio>
#include <queue>using namespace std;int min(int a,int b) {return a<b?a:b;
}struct Node {int fe,v,from;int c,r,t[2];void read() {fe=v=from=-1;char cc;scanf(" %c",&cc);if (cc=='B') c=0;else c=1;scanf("%d%d%d",&r,&t[0],&t[1]);}
};
struct Edge {int t,ne,v;
};
struct QueNode {int i,v;QueNode() {}QueNode(int ii,int vv) {i=ii;v=vv;}friend bool operator < (const QueNode &a,const QueNode &b) {return a.v>b.v;}
};Node a[301];
Edge b[28000];
priority_queue<QueNode> c;
int s,t,n,m,p;void putedge(int x,int y,int z) {b[p].t=y;b[p].v=z;b[p].ne=a[x].fe;a[x].fe=p++;
}void cal(int &it,int &ic,int i,int t) {t%=(a[i].t[0]+a[i].t[1]);ic=a[i].c;if (t<a[i].r) it=a[i].r-t;else {t-=a[i].r;ic^=1;if (t<a[i].t[ic]) it=a[i].t[ic]-t;else {t-=a[i].t[ic];ic^=1;it=a[i].t[ic]-t;}}
}int wait(int i,int j,int t) {int it,ic,jt,jc;cal(it,ic,i,t);cal(jt,jc,j,t);//printf("%d %d %d %d\n",it,ic,jt,jc);if (ic==jc) return 0;if (it!=jt) return min(it,jt);if (a[i].t[jc]!=a[j].t[ic]) return jt+min(a[i].t[jc],a[j].t[ic]);if (a[i].t[ic]!=a[j].t[jc]) return jt+a[j].t[ic]+min(a[i].t[ic],a[j].t[jc]);return -1;
}void dij(int s,int t) {int i,j;a[s].v=0;c.push(QueNode(s,0));while (!c.empty()) {i=c.top().i;if (i==t) return;if (c.top().v==a[i].v) {for (j=a[i].fe;j!=-1;j=b[j].ne) {int tmp=wait(i,b[j].t,a[i].v);//printf("--%d %d %d %d\n",i,b[j].t,a[i].v,tmp);if (tmp!=-1) {tmp+=a[i].v+b[j].v;if (a[b[j].t].v==-1||tmp<a[b[j].t].v) {a[b[j].t].from=i;a[b[j].t].v=tmp;c.push(QueNode(b[j].t,tmp));}}}}c.pop();}
}int main() {int i,x,y,z;int ans[300];scanf("%d%d",&s,&t);scanf("%d%d",&n,&m);for (i=1;i<=n;i++) {a[i].read();}p=0;for (i=0;i<m;i++) {scanf("%d%d%d",&x,&y,&z);putedge(x,y,z);putedge(y,x,z);}dij(s,t);if (a[t].v==-1) printf("0\n");else {printf("%d\n",a[t].v);p=0;for (i=t;i!=-1;i=a[i].from) ans[p++]=i;while (p) printf("%d ",ans[--p]);printf("\n");}return 0;
}

[SGU 103] Traffic Lights [最短路]相关推荐

  1. SGU 103 Traffic Lights(最短路)

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

  2. SGU 103 Traffic Lights (最短路)

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

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

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

  4. SGU 103 Traffic Lights【最短路】

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

  5. SGU 103 Traffic Lights

    http://acm.sgu.ru/problem.php?contest=0&problem=103 有条件限制的最短路问题,当且仅当点的颜色一样时可以通行否则需要等到符合条件时才可以通行. ...

  6. SGU 103 Traffic Lights 翻译 题解

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

  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. 转:58到家数据库30条军规解读
  2. IBM GSA Senior DBA招聘
  3. Windows Socket 编程
  4. 北京那些年轻人的秘密,都藏在这篇文章里
  5. Python + wordcloud + jieba 十分钟学会用任意中文文本生成词云
  6. 推荐系统评估:你的推荐系统足够好吗?
  7. vue页面回显数据_解决vue表单回显数据无法修改的问题
  8. Cmake构建_设置debug与release不同名字
  9. SceneFlow Dataset
  10. freemyapps 推荐链接
  11. python自然语言学习之处理原始文本中3.1访问2554文本《罪与罚》出现问题解决
  12. detectron2 学习笔记
  13. 2021年新安装的Win7系统,Windows Update无法更新,提示错误代码80072EFE
  14. unity 所有版本下载地址
  15. win7 电脑如何内外网同时使用
  16. 【免费报名】技术沙龙第22期:美团点评AI实践
  17. linux内核时间管理(一) : 时间概念和延迟操作
  18. 浅谈JVM(面试常考)
  19. 一次学神and农夫and“i春秋”的心理交锋
  20. u盘中病毒文件被隐藏怎么恢复?看看这三种方法

热门文章

  1. 世界地图可以无限放大_又双叒叕被世界地图漏掉!委屈巴巴的新西兰人民简直心累!...
  2. Openstack_ocata部署
  3. Unity3d:加载Format是RGB24位的图片失败(加载图片显示问号)
  4. 正好股票资讯近期商场呈现出以白马、科技体裁接连调整
  5. 两台服务器共享文件夹,两台文件服务器的共享文件如何实时同步?
  6. html无法选记事本打开方式,WinXp无法打开记事本或打开记事本会弹出打开方式的解决方案...
  7. 华为3Com 802.1认证客户端西安建筑科技大学专用版 程序写完了
  8. ArcGIS Pro随机森林模型深度机器学习预测海草栖息地【教程】
  9. 中软计算机培训怎样,在中软计算机培训之后的工资好不好?
  10. 细数oracle的异常