D. Jzzhu and Cities
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Jzzhu is the president of country A. There are n cities numbered from 1 to n in
his country. City 1 is the capital of A. Also there are mroads
connecting the cities. One can go from city ui to vi (and
vise versa) using the i-th road, the length of this road is xi.
Finally, there are k train routes in the country. One can use the i-th
train route to go from capital of the country to city si (and
vise versa), the length of this route is yi.

Jzzhu doesn't want to waste the money of the country, so he is going to close some of the train routes. Please tell Jzzhu the maximum number of the train routes which can be closed under the following condition: the length of the shortest path from every city
to the capital mustn't change.

Input

The first line contains three integers n, m, k (2 ≤ n ≤ 105; 1 ≤ m ≤ 3·105; 1 ≤ k ≤ 105).

Each of the next m lines contains three integers ui, vi, xi (1 ≤ ui, vi ≤ nui ≠ vi; 1 ≤ xi ≤ 109).

Each of the next k lines contains two integers si and yi (2 ≤ si ≤ n; 1 ≤ yi ≤ 109).

It is guaranteed that there is at least one way from every city to the capital. Note, that there can be multiple roads between two cities. Also, there can be multiple routes going to the same city from the capital.

Output

Output a single integer representing the maximum number of the train routes which can be closed.

Sample test(s)
input
5 5 3
1 2 1
2 3 2
1 3 3
3 4 4
1 5 5
3 5
4 5
5 5
output
2
input
2 2 3
1 2 2
2 1 3
2 1
2 2
2 3
output
2

思路:这题仅仅要引入一个最短路条数,然后再遍历火车线,假设最短路与火车线长度相等,此时假设最短路条数是1的话,那说明这个最短路就是火车线,不能去掉,假设最短路条数大于1条,说明除了这条火车线外还有别的跟他相同短的路,能够去掉;假设火车线长度比最短路长的话,显然能够去掉。

这题刚開始看确实挺蛋疼的,比赛的时候也没啥想法。好久不做图论方面的了,所以有点不会了。

刚才敲spfa还又一次看了下这算法才会手敲,确实有点生了。

刚開始queue没过,T了。然后改成优先队列就过了。呵呵。没明确。不是dijkstra才得用优先队列么,这题为什么也要用。后面想想,应该是先后问题T了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define INF 1000000070000
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int cnt,n,head[900005],vis[900005];
int repeat[900005];//记录反复的边
ll dist[900005],Map[900005];
struct node
{
int v,next,w;
} e[900005];
void add(int u,int v,int w)
{
e[cnt].v=v;
e[cnt].w=w;
e[cnt].next=head[u];
head[u]=cnt++;
}
void spfa()
{
int i,j;
priority_queue<int>q;
for(i=0; i<=n; i++) dist[i]=INF;
repeat[1]=1;
q.push(1);
vis[1]=1;
dist[1]=0;
while(!q.empty())
{
int u=q.top();
q.pop();
vis[u]=0;
for(i=head[u]; i!=-1; i=e[i].next)
{
if(dist[e[i].v]>dist[u]+e[i].w)
{
dist[e[i].v]=dist[u]+e[i].w;
repeat[e[i].v]=repeat[u];
if(!vis[e[i].v])
{
vis[e[i].v]=1;
q.push(e[i].v);
}
}
else if(dist[e[i].v]==dist[u]+e[i].w)
{
repeat[e[i].v]+=repeat[u];
if(repeat[e[i].v]>=2) repeat[e[i].v]=2;
}
}
}
}
int main()
{
int m,k,i,j,u,v,w,sum=0;//sum表示须要保留的火车线路
mem(head,-1);
cin>>n>>m>>k;
for(i=0;i<=n;i++)
Map[i]=INF;
for(i=0; i<m; i++)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
for(i=0; i<k; i++)
{
scanf("%d%d",&v,&w);
if(Map[v]>w) Map[v]=w;
}
for(i=1; i<=n; i++)
{
if(Map[i]!=INF)
{
add(1,i,Map[i]);
add(i,1,Map[i]);
sum++;
}
}
spfa();
for(i=1; i<=n; i++)
if(Map[i]!=INF)
{
if(dist[i]==Map[i]&&repeat[i]==2) sum--;
else if(dist[i]<Map[i]) sum--;
}
printf("%d\n",k-sum);//总的减去保留在最短路里面的
return 0;
}

Codeforces Round #257 (Div. 2) D题:Jzzhu and Cities 删特殊边的最短路的更多相关文章

  1. Codeforces Round #257 (Div. 2) E题:Jzzhu and Apples 模拟

    E. Jzzhu and Apples time limit per test 1 second memory limit per test 256 megabytes input standard ...

  2. Codeforces Round #257 (Div. 2) A题

    A. Jzzhu and Children time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. Codeforces Round #257 (Div. 2 ) B. Jzzhu and Sequences

    B. Jzzhu and Sequences time limit per test 1 second memory limit per test 256 megabytes input standa ...

  4. Codeforces Round #257 (Div. 1)A~C(DIV.2-C~E)题解

    今天老师(orz sansirowaltz)让我们做了很久之前的一场Codeforces Round #257 (Div. 1),这里给出A~C的题解,对应DIV2的C~E. A.Jzzhu and ...

  5. Codeforces Round #378 (Div. 2) D题(data structure)解题报告

    题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...

  6. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  7. Codeforces Round #713 (Div. 3)AB题

    Codeforces Round #713 (Div. 3) Editorial 记录一下自己写的前二题本人比较菜 A. Spy Detected! You are given an array a ...

  8. Codeforces Round #552 (Div. 3) A题

    题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...

  9. Codeforces Round #257(Div. 2) B. Jzzhu and Sequences(矩阵高速幂)

    题目链接:http://codeforces.com/problemset/problem/450/B B. Jzzhu and Sequences time limit per test 1 sec ...

随机推荐

  1. 在Ubuntu Desktop打开终端的2种方式

    共有3中方法: 1.在Ubuntu左上角选择File/Open in Terminal 2.快捷键alt+F2调出Run a Command,输入gnome-terminal 添加右键支持 在终端,输 ...

  2. 基于DSP的疲劳驾驶检测系统的研究

    原地址:http://www.chinaaet.com/article/index.aspx?id=114534 关键词:疲劳检测DSP亮瞳效应PERCLOS 摘  要: 针对汽车驾驶员疲劳驾驶检测的 ...

  3. 解决SQL查询总是超时已过期

    解决SQL查询总是超时已过期 .在WIN8里提示:OLE DB 或 ODBC 错误 : 查询超时已过期; HYT00 1.由于数据库设计问题造成SQL数据库新增数据时超时 症状:   Microso ...

  4. 【C#遗补】获取应用程序路径之System.IO.Directory.GetCurrentDirectory和System.Windows.Forms.Application.StartupPath的区别

    原文:[C#遗补]获取应用程序路径之System.IO.Directory.GetCurrentDirectory和System.Windows.Forms.Application.StartupPa ...

  5. WPF案例 (三) 模拟QQ“快速换装"界面

    原文:WPF案例 (三) 模拟QQ"快速换装"界面 这个小程序使用Wpf模拟QQ快速换装页面的动画特效,通过使用组合快捷键Ctrl+Left或Ctrl+Right,可实现Image ...

  6. cocos2d_x_05_Box2D物理引擎

    一.认识Box2D 帮助文档,共69页 二.创建一个物理世界 先导入主头文件 #include <Box2D/Box2D.h> 三.物理世界一览 像素转成米 的比例因子 就是32 三.运动 ...

  7. 你属于几K(千)?

    月薪2k.对出勤率负责:5k,对按时完毕率负责:8k,对质量负责:12k.对小团队的情绪负责:16k,对到款率负责:20k,要想着怎么保住自己的饭碗.40k.保住部门.100k.保住大部门:100k+ ...

  8. C#的百度地图开发(二)转换JSON数据为相应的类

    原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...

  9. 【PLSQL】绑定变量,活跃SQL,软硬解析解析

    ************************************************************************   ****原文:blog.csdn.net/clar ...

  10. iOS7 文本转语音 AVSpeechSynthesizer

    OS7 的这个功能确实不错.我刚试了下,用官方提供的API ,简单的几句代码就能实现文本转语音! Xcode 5.0 工程建好后首先把AVFoundation.framework 加入到工程 AVSp ...