hdoj3790 【最短路】
这一题啊,其实还是很简单的~(A掉了就很简单啊~)
思路:
松弛,然后在里面维护一个小最短路~;
A掉这一题,感觉松弛的理解又上了一个台阶,以及spfa的原理,最短路用到的原理就是松弛,先把图构造到最优,然后输出一下就好了~
还是最喜欢国产spfa!!强大,无敌!!!
所以还是在spfa上搞搞~~
【现在再看博客时,曾今那个天真的自己。。。qaq,巨巨莫怪】
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
const double pi = acos(-1.0);
const int mod =9973;
const int N = 1010;
struct asd{
int to;
int w;
int m;
int next;
};
bool vis[N];
int dis[N];
int used[N];
asd q[N*N];
int tol,head[N*N];
int cash[N][N];
int n;
queue<int>e;
void super_spfa(int s,int t)
{
while(!e.empty())
e.pop();
for(int i=1;i<=n;i++)
{
if(i!=s)
{
vis[i]=0;
dis[i]=INF;
used[i]=cash[s][i];
}
}
// printf("%d\n",used[3]);
used[s]=0;
vis[s]=1;
dis[s]=0;
e.push(s);
while(!e.empty())
{
int u=e.front();e.pop();
vis[u]=0;
for(int v=head[u];v!=-1;v=q[v].next)
{
int i=q[v].to;
// printf("i=%d\n",i);
if(dis[i]>dis[u]+q[v].w)
{
dis[i]=dis[u]+q[v].w;
used[i]=used[u]+q[v].m;
if(!vis[i])
{
vis[i]=1;
e.push(i);
}
//printf("i=%d %d\n",i,used[i]);
}
else if(dis[i]==dis[u]+q[v].w)
{
if(used[i]>used[u]+q[v].m)
{
used[i]=used[u]+q[v].m;
// printf("i=%d %d\n",used[i]);
if(!vis[i])
{
vis[i]=1;
e.push(i);
}
}
}
}
}
printf("%d %d\n",dis[t],used[t]);
}
void add(int a,int b,int c,int d)
{
q[tol].to=b;
q[tol].w=c;
q[tol].m=d;
q[tol].next=head[a];
head[a]=tol++;
}
int main()
{
int m;
int a,b,c,d,s,t;
while(~scanf("%d%d",&n,&m)&&n&&m)
{
tol=0;
memset(head,-1,sizeof(head));
for(int i=0;i<m;i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
add(a,b,c,d);
add(b,a,c,d);
cash[a][b]=cash[b][a]=d;
}
scanf("%d%d",&s,&t);
super_spfa(s,t);
}
return 0;
}
hdoj3790 【最短路】的更多相关文章
- bzoj1001--最大流转最短路
http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...
- 【USACO 3.2】Sweet Butter(最短路)
题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...
- Sicily 1031: Campus (最短路)
这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...
- 最短路(Floyd)
关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...
- bzoj1266最短路+最小割
本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...
- HDU2433 BFS最短路
Travel Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 最短路(代码来源于kuangbin和百度)
最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...
- Javascript优化细节:短路表达式
什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...
- Python中三目计算符的正确用法及短路逻辑
今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...
随机推荐
- onlyOffice 开发相关 总结
onlyOffice 服务端 客户端 相关开发整理 功能: 所有客户端都可用 云端部署服务 查看 预览 doc ppt excel 编辑 权限控制 开发技术准备 用户服务器端 提供保存接口 用户浏览器 ...
- 微信小程序 项目实战(一)生命周期 配置服务器信息 splash启动页
步骤一:小程序 生命周期 //app.js App({ onLaunch: function () { //当小程序初始化完成时,会触发onLaunch(全局只触发一次) }, onShow: fun ...
- 在java中String类为什么要设计成final?
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...
- 通达OA 一些工作流调整后带来的后果及应对措施
近期单位有个工作流须要改动,原因是最早设计时控件的字段设计不规范,控件直接使用了人员的名字来命名了.这不使用手机訪问时就出问题了,名字会直接显示出来,如今就须要进行调整. 调整初步有两个方案: 一是全 ...
- 【转载】一些VS2013的使用技巧
1. Peek View 可以在不新建TAB的情况下快速查看.编辑一个函数的代码. 用法:在光标移至某个函数下,按下alt+F12. 然后在Peek窗口里可以继续按alt+F12.然后按ctrl+al ...
- Expression Tree 学习笔记(一)
大家可能都知道Expression Tree是.NET 3.5引入的新增功能.不少朋友们已经听说过这一特性,但还没来得及了解.看看博客园里的老赵等诸多牛人,将Expression Tree玩得眼花缭乱 ...
- MySQL中给自定义的字段查询结果添加排名的方法
我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法. 下面是一个示例表的数据: 然后我们要根据 Roll_No 字段进行排序并给出排名,我 ...
- 深度学习入门-4.1 AND.py 源码分析
源代码 ------------------------------------------------------------------------------------------------ ...
- bootstrap的学习注意点
1.bootstrop里面所有的内容都需要用一个container 容器包裹起来: 2.一屏二屏什么的,是通过id 与href实现的: 3.下拉与菜单之类的都有固定的代码: 4.需要修改相关属性的话, ...
- POJ 2017 Speed Limit (直叙式的简单模拟 编程题目 动态属性很少,难度小)
Sp ...