这一题啊,其实还是很简单的~(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 【最短路】的更多相关文章

  1. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  2. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  3. Sicily 1031: Campus (最短路)

    这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...

  4. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  5. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  6. HDU2433 BFS最短路

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. 最短路(代码来源于kuangbin和百度)

    最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...

  8. Javascript优化细节:短路表达式

    什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...

  9. Python中三目计算符的正确用法及短路逻辑

    今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...

随机推荐

  1. HDU oj 开门人与关门人

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1234 #include<stdio.h> #include<string.h> ...

  2. JAVA BigDecimal 高精度运算

    文章参考一位博友,由于时间太久忘了链接,见谅! public class BigDecimalUtils { private static final int DIV_SCALE = 10;// 除法 ...

  3. vue 安装与起步

    vue安装: 1.官网下载vue,在script标签里引用(去下载) 2.使用CDN(建议下载到本地,不推荐这种方法): BootCDN:https://cdn.bootcss.com/vue/2.2 ...

  4. 基于mac系统的apacheserver的使用流程

    打开终端.输入下面命令:sudo apachectl start 此时Apache已经开启.在浏览器中输入本地ip地址能够看到it works! 打开前往----电脑------Macintosh H ...

  5. WPF代码注意事项,开发常见问题,知识总结

    代码注意事项: 1.代码实现的样式赋值 XXX.Style = TryFindResource("StyleName") as Style; 2.WPF中FindName方法的使用 ...

  6. 常用的sql命令

    1 mysql创建数据库 create database [database name]; 2 创建表 create table [table name]([first column name] [f ...

  7. poj 1742 Coins(二进制拆分+bitset优化多重背包)

    \(Coins\) \(solution:\) 这道题很短,开门见山,很明显的告诉了读者这是一道多重背包.但是这道题的数据范围很不友好,它不允许我们直接将这一题当做01背包去做.于是我们得想一想优化. ...

  8. (C\C++)inline关键字

    背景(C&C++中) inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义如: #define ExpressionName(Va ...

  9. uuid.js

    // On creation of a UUID object, set it's initial valuefunction UUID(){    this.id = this.createUUID ...

  10. 书写优雅的shell脚本(插曲)- ed编辑器

    今天发现了一个灰常好用的unix/linux文本行编辑器:ed,对于进行面向行的文本编辑工作她真是太棒了,比vi操作简单.方便.功能强大.感兴趣的同仁可以尝试一下!