【BZOJ2662】【BeiJing wc2012】冻结 分层图 裸的!

我都不好意思发题解了,看这篇博吧。(飞行路线的,基本一样)

http://blog.csdn.net/vmurder/article/details/40075989

同学做了好久,我害怕题里有坑,又重写了一遍~~~

7分钟,都不乐意测样例测点就A了啊哈。

#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 55
#define M 1010
#define K 50
#define inf 0x3f3f3f3f
using namespace std;
struct KSD
{
	int v,len,next;
}e[M<<1];
int head[N],cnt;
void add(int u,int v,int len)
{
	cnt++;
	e[cnt].v=v;
	e[cnt].len=len;
	e[cnt].next=head[u];
	head[u]=cnt;
}
struct Lux
{
	int x,y;
	Lux(int a,int b):x(a),y(b){}
	Lux(){}
};
int n,m,p;
int dist[K][N],s,t;
bool in[K][N];

int spfa()
{
	int i,v;
	queue<Lux>q;
	memset(dist,0x3f,sizeof(dist));
	dist[0][s]=0;
	in[0][s]=1;
	q.push(Lux(0,s));
	while(!q.empty())
	{
		Lux U=q.front();q.pop();
		for(i=head[U.y];i;i=e[i].next)
		{
			v=e[i].v;
			if(dist[U.x][v]>dist[U.x][U.y]+e[i].len)
			{
				dist[U.x][v]=dist[U.x][U.y]+e[i].len;
				if(!in[U.x][v])
				{
					in[U.x][v]=1;
					q.push(Lux(U.x,v));
				}
			}
		}
		if(U.x<p)for(i=head[U.y];i;i=e[i].next)
		{
			v=e[i].v;
			if(dist[U.x+1][v]>dist[U.x][U.y]+(e[i].len>>1))
			{
				dist[U.x+1][v]=dist[U.x][U.y]+(e[i].len>>1);
				if(!in[U.x+1][v])
				{
					in[U.x+1][v]=1;
					q.push(Lux(U.x+1,v));
				}
			}
		}
	}
	int ret=inf;
	for(i=0;i<=p;i++)ret=min(ret,dist[i][t]);
	return ret;
}

int main()
{
	int i,j,k;
	int a,b,c;
	scanf("%d%d%d",&n,&m,&p);
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&a,&b,&c);
		add(a,b,c);
		add(b,a,c);
	}
	s=1,t=n;
	printf("%d\n",spfa());
	return 0;
}
时间: 2024-10-26 03:11:00

【BZOJ2662】【BeiJing wc2012】冻结 分层图 裸的!的相关文章

分层图最短路(DP思想) BZOJ2662 [BeiJing wc2012]冻结

2662: [BeiJing wc2012]冻结 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 999  Solved: 535[Submit][Status][Discuss] Description "我要成为魔法少女!" "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中??" 在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符 卡

bzoj2662 [BeiJing wc2012]冻结

2662: [BeiJing wc2012]冻结 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1007  Solved: 541[Submit][Status][Discuss] Description "我要成为魔法少女!"     "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中??"        在这个愿望被实现以后的世界里,人们享受着魔法卡片(Spe

【最短路】【Heap-Dijkstra】【分层图】bzoj2662 [BeiJing wc2012]冻结

裸的分层图最短路. 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 #define N 51 7 #define K 51 8 #define M 2001 9 struct Point{int u,d;Point(const int &a,const int &b){d=a;u=b;

bzoj2662: [BeiJing wc2012]冻结 最短路 建图

好久没有1A题啦?(^?^*) 一个sb建图,我居然调样例调了10min 看起来是双向边,其实在建图的时候要当成有向图, 否则他会时间倒流(233) 把每个点裂成k个点,然后把每条边裂成4条边(正向反向&膜不膜) (话说我好像不会用openlivewriter贴代码,尴尬了) 1 #include <bits/stdc++.h> 2 #define poi(x,y) ((x)*(k+1)+(y)) 3 #define st poi(1,0) 4 #define INF 20000000

BZOJ2662[BeiJing wc2012]冻结【SPFA】

“我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„”        在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符卡)带来的便捷.  现在,不需要立下契约也可以使用魔法了!你还不来试一试?   比如,我们在魔法百科全书(Encyclopedia  of  Spells)里用“freeze”作为关键字来查询,会有很多有趣的结果. 例如,我们熟知的Cirno,她的冰冻魔法当然会有对应的 SpellCard

BZOJ 2662: [BeiJing wc2012]冻结(最短路)

这道题和 BZOJ 2763飞行路线 几乎一模一样..然后飞行路线我是1A,这道题WA了4次,我开始怀疑我的智商了.. -------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #inclu

BZOJ_2662_[BeiJing wc2012]冻结_分层图最短路

Description “我要成为魔法少女!”     “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„”        在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符 卡)带来的便捷.   现在,不需要立下契约也可以使用魔法了!你还不来试一试?   比如,我们在魔法百科全书(Encyclopedia  of  Spells)里用“freeze”作为关 键字来查询,会有很多有趣的结果. 例如,我们熟知的Cirno,她的冰冻魔

bzoj2662:[BeiJing wc2012]冻结

题目描述 "我要成为魔法少女!"     "那么,以灵魂为代价,你希望得到什么?" "我要将有关魔法和奇迹的一切,封印于卡片之中??"        在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符卡)带来的便捷.  现在,不需要立下契约也可以使用魔法了!你还不来试一试?   比如,我们在魔法百科全书(Encyclopedia  of  Spells)里用"freeze"作为关键字来查询,会有很多有

P2939 [USACO09FEB]改造路[分层图最短路]

题意翻译 约翰一共有N)个牧场.由M条布满尘埃的小径连接.小径可 以双向通行.每天早上约翰从牧场1出发到牧场N去给奶牛检查身体. 通过每条小径都需要消耗一定的时间.约翰打算升级其中K条小径,使之成为高 速公路.在高速公路上的通行几乎是瞬间完成的,所以高速公路的通行时间为0. 请帮助约翰决定对哪些小径进行升级,使他每天从1号牧场到第N号牧场所花的时间最短 解析 提高练习场看到这题,瞄一眼,诶,这不是分层图裸题吗??? [啥是分层图] 分层图,简单来说,就是把一张图复制多次,分为多份,每层图代表一种