道路翻新 (Revamping Trails, USACO 2009 Feb)
题意:给定m<=50000的1-n有联通的图,求最多可以使K<=20条边变为0的情况下的最短路是多少。。
思路:简单的分层图最短路,对于每个点拆成K个点。。
然后求一边最短路。。
code:
/*
* Author: Yzcstc
* Created Time: 2014/11/5 19:25:47
* File Name: revamp.cpp
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<ctime>
#define M0(x) memset(x, 0, sizeof(int) * (n+10))
#define MP make_pair
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair<ll, int> pii;
const int maxn = ;
struct edge{
int v, w, next;
} e[maxn * ];
int last[maxn], tot;
int n, k, m; void add(const int &u,const int &v, const int& w){
e[tot] = (edge){v, w, last[u]}; last[u] = tot++;
} void init(){
int u, v, w;
memset(last, -, sizeof(int) * (n * k + ));
tot = ;
for (int i = ; i < m; ++i){
scanf("%d%d%d", &u, &v, &w);
add(u, v, w); add(v, u, w);
for (int i = ; i <= k; ++i){
add(u + i * n, v + i * n, w);
add(v + i * n, u + i * n, w);
add(u + (i-) * n, v + i * n, );
add(v + (i-) * n, u + i * n, );
}
}
} ll dis[maxn];
int vis[maxn];
void dij(){
priority_queue<pii, vector<pii>, greater<pii> > q;
int nt = n * k + n;
memset(vis, , sizeof(vis));
for (int i = ; i <= nt; ++i) dis[i] = (1LL<<);
pii tmp(, ); dis[] = ;
q.push(tmp);
int u, v;
while (!q.empty()){
u = q.top().y;
q.pop();
if (vis[u]) continue;
vis[u] = ;
for (int p = last[u]; ~p; p = e[p].next){
v = e[p].v;
if (dis[u] + e[p].w < dis[v]){
dis[v] = dis[u] + e[p].w;
tmp.x = dis[v], tmp.y = v;
q.push(tmp);
}
}
}
} void solve(){
dij();
ll ans = 1LL<<;
for (int i = ; i <= k; ++i)
ans = min(ans, dis[n+i*n]);
cout << ans << endl;
} int main(){
freopen("a.in", "r", stdin);
freopen("a.out", "w", stdout);
clock_t start, finish;
start = clock();
while (scanf("%d%d%d", &n, &m, &k) != EOF){
init();
solve();
}
finish = clock();
double t = (double)(finish - start) / CLOCKS_PER_SEC;
// printf("time = %.6f\n", t);
return ;
}
道路翻新 (Revamping Trails, USACO 2009 Feb)的更多相关文章
- USACO 2009 Feb 股票市场 Stock Market
USACO 2009 Feb 股票市场 Stock Market Description 尽管奶牛们天生谨慎,她们仍然在住房抵押信贷市场中大受打击,现在她们准备在股市 上碰碰运气.贝西开挂了,她知道S ...
- BZOJ1579 USACO 2009 Feb Gold 3.Revamping Trails Solution
标题效果:一个N积分m无向图边.它可以是路径k右边缘值变0,确定此时1-n最短路径长度. Sol:我以为我们考虑分层图,图复制k+1部分,每间0~k一层.代表在这个时候已经过去"自由边缘&q ...
- BZOJ1577 USACO 2009 Feb Gold 1.Fair Shuttle Solution
权限题,不给传送门啦!在学校OJ上交的.. 有些不开心,又是一道贪心,又是一个高级数据结构的模板,又是看了别人的题解还写崩了QAQ,蒟蒻不需要理由呀. 正经题解: 首先,我们可以由「显然成立法」得出, ...
- 【BZOJ】【3398】【USACO 2009 Feb】Bullcow 牡牛和牝牛
组合计数/乘法逆元 排列组合求总方案数 这个可以用一个一维的动态规划解决: f[i][0]表示第i头牛是牝牛的方案数 f[i][1]表示第i头牛是牡牛的方案数 则转移为:f[i][0]=f[i-1][ ...
- [USACO 2009 Feb Gold] Fair Shuttle (贪心+优先队列)
题目大意:有N个站点的轻轨站,有一个容量为C的列车起点在1号站点,终点在N号站点,有K组牛群,每组数量为Mi(1≤Mi≤N),行程起点和终点分别为Si和Ei(1≤Si<Ei≤N).计算最多有多少 ...
- Bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级 dijkstra,堆,分层图
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1573 Solv ...
- BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级( 最短路 )
最短路...多加一维表示更新了多少条路 -------------------------------------------------------------------------------- ...
- 【BZOJ 1579】 1579: [Usaco2009 Feb]Revamping Trails 道路升级 (最短路)
1579: [Usaco2009 Feb]Revamping Trails 道路升级 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M< ...
- BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路
BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M ...
随机推荐
- 一天一经典Reducing the Dimensionality of Data with Neural Networks [Science2006]
别看本文没有几页纸,本着把经典的文多读几遍的想法,把它彩印出来看,没想到效果很好,比在屏幕上看着舒服.若用蓝色的笔圈出重点,这篇文章中几乎要全蓝.字字珠玑. Reducing the Dimensio ...
- android中的requestFocus标签
<requestFocus />标签用于指定屏幕中的焦点View 用法:置于Views标签内部 ex: <EditText android:id=" ...
- Java(String)
1>String类型判等 (1)请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? package StringPool; publi ...
- asp.net web api集成微信服务(使用Senparc微信SDK)
/// <summary> /// 微信请求转发控制器 /// </summary> [RoutePrefix("weixin")] public clas ...
- 分享Db4o的便捷封装类源码
导言 大家好,话说真是好久好久没写文章了,哈哈. 最近在写网站,个人对传统数据库天然抵触,感觉非常繁冗,即便是Entity Framework也过于庞杂了,Db4o这种轻量级且读写.配置都极其方便的新 ...
- nginx+tomcat负载均衡
最近练习nginx+tomcat负载均衡.根据一些资料整理了大体思路,最终实现了1个nginx+2个tomcat负载均衡. 安装JDK 1>进入安装目录,给所有用户添加可执行的权限 #chmod ...
- Xmanager远程Centos 7 Xfce
最近发现远程除了使用VNC还可以用Xmanager,孤陋寡闻了,通过这个远程软件,又把不怎么关注的Xwindow给了解了一遍. Xfce是一个自由软件,运行在类Unix操作系统 (如Linux.Fre ...
- linux 怎么完全卸载mysql数据库
在linux下开发,mysql数据库是经常用到的,对于初学者来说,在linux怎么安装卸载mysql数据库,也许可能比较痛苦,这里简单介绍下,怎么卸载msql数据库. a)查看系统中是否以rpm包安装 ...
- Windows如何修改MySQL用户root密码
听语音 浏览:16925 | 更新:2015-06-12 14:49 | 标签:windows 1 2 3 4 5 6 分步阅读 MySQL是一个关系型数据库管理系统,在 WEB 应用方面 MySQL ...
- .NET J2EE APP全局会话架构运用场景
.NET J2EE APP全局会话架构运用场景, 全局会话运用拓扑图代码核心架构为.NET架构开发C#语言为主代码架构分为全局会话中心.ASP.NET会话节点..NET会话节点针对WCF服务器与APP ...