大陆争霸(bzoj 1922)
Description
Input
Output
Sample Input
1 2 1
1 4 3
2 3 1
2 5 2
4 6 2
5 3 2
0
0
0
1 3
0
2 3 5
Sample Output
HINT
对于 20%的数据,满足 N≤15,M≤50;
对于 50%的数据,满足 N≤500,M≤6,000;
对于 100%的数据,满足 N≤3,000,M≤70,000,1≤wi≤108
。
输入数据保证一定有解,且不会存在维持某个城市结界的结界发生器在这个
城市内部。
连接两个城市的道路可能不止一条, 也可能存在一个城市自己到自己的道路。
/*
带限制的Dijkstra
d1[i]表示到达i点的最短时间,d2[i]表示能够破坏i点的最短时间。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#define N 3010
#define M 70010
using namespace std;
int head[N],d[N],d1[N],d2[N],vis[N],grap[N][N],n,m;
struct node{int v,w,pre;}e[M];
struct Node{
int x,dist;
bool operator<(Node s1) const{
return dist>s1.dist;
}
};priority_queue<Node> q;
void add(int i,int u,int v,int w){
e[i].v=v;e[i].w=w;e[i].pre=head[u];head[u]=i;
}
void Dij(){
memset(d1,/,sizeof(d1));
q.push((Node){,});d1[]=;
while(!q.empty()){
int u=q.top().x,mx=q.top().dist;q.pop();
if(vis[u]) continue;vis[u]=;
for(int i=head[u];i;i=e[i].pre){
int v=e[i].v;
if(d1[v]>mx+e[i].w){
d1[v]=mx+e[i].w;
if(!d[v]) q.push((Node){v,max(d1[v],d2[v])});
}
}
for(int i=;i<=grap[u][];i++){
int v=grap[u][i];d[v]--;
d2[v]=max(d2[v],mx);
if(!d[v]) q.push((Node){v,max(d1[v],d2[v])});
}
}
printf("%d",max(d1[n],d2[n]));
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int u,v,w;scanf("%d%d%d",&u,&v,&w);
add(i,u,v,w);
}
for(int i=;i<=n;i++){
scanf("%d",&d[i]);
for(int j=;j<=d[i];j++){
int x;scanf("%d",&x);
grap[x][++grap[x][]]=i;
}
}
Dij();
return ;
}
大陆争霸(bzoj 1922)的更多相关文章
- BZOJ-1922 大陆争霸 多限制、分层图最短路 (堆+dijkstra)
1922: [Sdoi2010]大陆争霸 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1154 Solved: 478 [Submit][Status ...
- 【BZOJ1922】大陆争霸(最短路)
[BZOJ1922]大陆争霸(最短路) 题面 BZOJ 洛谷 题解 最短路变形题. 定义\(dis\)表示最短路,\(d\)表示最早可以进入当前点的时间.显然\(d=max(max(dis_v,d_v ...
- 洛谷 P2446 [SDOI2010]大陆争霸 解题报告
P2446 [SDOI2010]大陆争霸 题目背景 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭的神曾·布拉 ...
- AC日记——[SDOI2010]大陆争霸 洛谷 P3690
[SDOI2010]大陆争霸 思路: dijkstra模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn ...
- bzoj1922 [SDOI2010]大陆争霸 分层图
问题描述 幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:“Trust me, earn eternal life.”克里斯军团士气大增.作为克里斯军团的主帅,你决定利用这一机会发动奇袭,一举 ...
- bzoj 1922 [Sdoi2010]大陆争霸(最短路变形)
Description 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光 ...
- BZOJ 1922: [Sdoi2010]大陆争霸
Description 一个无向图,到一个点之前需要先到其他点,求从第一个点到第 \(n\) 点最短时间. Sol 拓扑+Dijkstra. 跑Dijkstra的时候加上拓扑序... 用两个数组表示 ...
- bzoj 1922: [Sdoi2010]大陆争霸【dijskstra】
d[u]为u被几个节点保护,d1[u]为最早到u的时间,d2[u]为u的最早可进入时间(保护点都被打下来了的时候),然后最终最早进入时间就是max(d1[u],d2[u]),把这个作为权值放进小根堆, ...
- BZOJ 1922: [Sdoi2010]大陆争霸 Dijkstra
Code: #include <queue> #include <vector> #include <cstdio> #include <cstring> ...
随机推荐
- 记录JQ-WEUI中滚动加载的一个BUG
最近写微信公众号,用到的技术栈是jq+vue的混合开发,采用的UI是移动端比较火的WEUI,在微信开发中应该较广泛.个人看惯了elementUI文档,相对于饿了么组件文档的详细,WEUI的文档还是比较 ...
- 16.2--Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
分类: Linux服务篇,Linux架构篇 一.环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴.具体只讲述Jenkins配置以及整个流程的实现. 1.JDK(或JRE)及J ...
- js数据结构与算法--递归
递归,函数自己调用自己 return 返回值, 后面的代码不执行 function fn(num){ console.log(num) if(num == 0){ return; } fn(num-1 ...
- 微信小程序中 this.setData is not a function报错
在微信小程序中我们一般通过以下方式来修改data中的数据: 比如获取小程序缓存: wx.getStorage({ key: 'is_screen', success: function (res) { ...
- GoF23种设计模式之创建型模式之单态模式
1概述 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 2适用性 1.当类只能有一个实例而且客户可以从一个总所周知的访问点访问它的时候. 2.当这个唯一实例应该是通过子类化可扩展的,并且客户应 ...
- Python全栈学习:匿名函数使用规范
匿名函数,当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x) ...
- Codeforces Round #435 (Div. 2) B (二分图) C(构造)
B. Mahmoud and Ehab and the bipartiteness time limit per test 2 seconds memory limit per test 256 me ...
- L1-049 天梯赛座位分配 (20 分)
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...
- Codeforces 653G Move by Prime 组合数学
题意: 有一个长度为\(n\)的正整数序列\(a\),有这样一种操作: 每次可以选序列中的某一个数乘上或除以某一个素数. 求对于每一个子序列使其所有元素相等的最少操作次数之和. 分析: 因为两个素数之 ...
- FreeMarker的基础语法使用 && 心得和技巧
FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. FreeMarker被设计用来生成HTML Web ...