【bzoj1922】[Sdoi2010]大陆争霸 - STL - dijkstra
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
。
输入数据保证一定有解,且不会存在维持某个城市结界的结界发生器在这个
城市内部。
连接两个城市的道路可能不止一条, 也可能存在一个城市自己到自己的道路。
题解
带限制的最短路。。。
设d1[x],d2[x]为城市x的到达时间,可进入时间
max(d1[x],d2[x])为真实的进入时间
d[x]记录城市x被多少个城市保护
每次堆中取出一个真实进入时间最小的城市
更新它所通往的城市的d1,保护城市的d2
保护城市的d–
若d=0,则可入堆
复杂度(n+m)logn
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<queue> #define ll long long
#define fzy pair<int,int>
#define mod 1000000007
#define inf 100000000
#define N 3007
#define M 70007 using namespace std;
int n,m;
int cnt,head[N],rea[M],next[M],val[M];
int d1[N],d2[N],d[N];
int l[N],a[N][N];
bool vis[N]; void add(int u,int v,int fee)
{
next[++cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
val[cnt]=fee;
}
void Dijkstra()
{
priority_queue<fzy,vector<fzy>,greater<fzy> >q; memset(d1,/,sizeof(d1));
q.push(make_pair(,));
d1[]=; while(!q.empty())
{
int u=q.top().second;q.pop();
if(vis[u])continue;vis[u]=;
int end=max(d1[u],d2[u]);
for(int i=head[u];i!=-;i=next[i])
{
int v=rea[i],fee=val[i];
if(end+fee<d1[v])
{
d1[v]=end+fee;
int tmp=max(d1[v],d2[v]);
if(!d[v])q.push(make_pair(tmp,v));
}
}
for(int i=;i<=l[u];i++)
{
int v=a[u][i];
d[v]--;d2[v]=max(d2[v],end);
int tmp=max(d1[v],d2[v]);
if(!d[v])q.push(make_pair(tmp,v));
}
}
}
int main()
{
memset(head,-,sizeof(head));
scanf("%d%d",&n,&m);
for(int i=,u,v,w;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(u!=v) add(u,v,w);
}
for(int i=;i<=n;i++)
{
scanf("%d",&d[i]);
for(int j=,u;j<=d[i];j++)
{
scanf("%d",&u);
a[u][++l[u]]=i;
}
} Dijkstra(); int ans=max(d1[n],d2[n]);
printf("%d\n",ans);
}
【bzoj1922】[Sdoi2010]大陆争霸 - STL - dijkstra的更多相关文章
- bzoj1922 [SDOI2010]大陆争霸 分层图
问题描述 幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:“Trust me, earn eternal life.”克里斯军团士气大增.作为克里斯军团的主帅,你决定利用这一机会发动奇袭,一举 ...
- BZOJ1922 [Sdoi2010]大陆争霸
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- BZOJ1922:[SDOI2010]大陆争霸(最短路)
Description 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光 ...
- BZOJ1922 [Sdoi2010]大陆争霸 【最短路】
题目 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光明和永恒的神斯普林 ...
- 【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]大陆争霸 堆优化Dijkstra
题目描述 一张n个点m条边的图,通过每条边需要一定的时间.有一些限制条件,每个限制条件形如“x保护y”,表示到达y的最短时间不能小于到达x的最短时间(即如果在其之前到达,则需要等待至xd到达).问1到 ...
- 【BZOJ1922】[Sdoi2010]大陆争霸 Dijkstra
Description 具体地说,杰森国有 N 个城市,由 M条单向道 路连接.神谕镇是城市 1而杰森国的首都是城市 N.你只需摧毁位于杰森国首都 的曾·布拉泽大神殿,杰森国的信仰,军队还有一切就都会 ...
随机推荐
- [BUG]Dreamweaver6做网页的一个图片文字不清晰的问题
自己用Dreamweaver6做一个网页,使用PS做图片,为了节约下载流量,我把图片裁剪为GIF格式,通过系统自带的图片浏览器和美图看看,图片上的文字都是清晰的. 我把图片加载进入DW中后,在DW界面 ...
- 转: ORA-06508 could not find program unit being called: "DBSNMP.BSLN_INTERNAL
告警日志中出现错误 Sun Jul 28 00:00:00 2013Errors in file /oracle/app/db/diag/rdbms/mis/MIS1/trace/MIS1_j001_ ...
- javascript中闭包与作用域的理解
很多js的框架与插件编写都用到了闭包,所以,阅读和掌握闭包很有必要.最近学习vue框架时,经常会猜想很多功能的native js实现,很多都应用到了闭包,闭包除了目前已知的一些特性,如:可以保持局部变 ...
- iOS中的蓝牙
iOS中的蓝牙 概述 iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),从iOS7开 ...
- iOS----轻松掌握AFN网络顶级框架
AFN 一.什么是AFN 全称是AFNetworking,是对NSURLConnection的一层封装 虽然运行效率没有ASI高,但是使用比ASI简单 在iOS开发中,使用比较广泛 AFN的githu ...
- C#中的常量、类型推断和作用域
一.常量 常量是其值在使用过程中不会发生变化的变量.在声明和初始化变量时,在变量前面家关键字const,就可以把该变量指定为一个常量: const int a=100;//a的值将不可以改变 常量的特 ...
- VS2017 移动开发(Android and IOS) 序
序 公司原因,要求用C#开发移动端app,老板觉得用现在会的C#做会比较快... 从零开始,折腾一个多星期,重装系统三遍(强迫症),其它各种折腾,终于手机运行上了第一个APP,看看就好... 不得不吐 ...
- 深入理解java虚拟机---垃圾收集器和分配策略-1
博文重点: 学习目标:哪些内存需要回收 什么时候回收 如何回收 在基于概念讨论的模型中,主要对Java堆和方法区进行讨论. why?:一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个 ...
- JVM参数说明介绍
1.JVM运行时数据区内存参数说明 2.JVM垃圾收集器参数总结 原文:https://blog.csdn.net/bluuusea/article/details/90697340 ======== ...
- super(Student,self).__init__()初始化的是什么东西?
继承不是为了继承里面原来的属性和值么,不初始化的话,会有什么问题? 2015-04-04源自:python进阶 5-17642 浏览2 回答 最佳回答 2015-05-05 1 super(Stude ...