HDU 1847(Bellman-Ford)

高仿代码:

#include <iostream>
#include <string.h>
#include <queue>
#include <vector>
#include <utility>
#include <cstdio>
using namespace std;
#define N 205
#define M 2005
const int inf = 0x3f3f3f3f;
int v[M],u[M],d[N],w[M],e;
void addedge(int a,int b,int x){
    v[e]=b;
    u[e]=a;
    w[e++]=x;

}
void bellman_ford(int n){
    for(int i=0;i<n;i++){
        for(int j=0;j<e;j++){
            if(d[v[j]]>d[u[j]]+w[j])
                d[v[j]]=d[u[j]]+w[j];
        }
    }
}
int main(){
    int n,m,a,b,x;
    //freopen("test.txt","r",stdin);
    while(cin>>n>>m){
        e=0;
        memset(d,0x3f,sizeof(d));
        for(int i=0;i<m;i++){
            cin>>a>>b>>x;
            addedge(a,b,x);
            addedge(b,a,x);
        }
        cin>>a>>b;
        d[a]=0;
        bellman_ford(n);
        if(d[b]==inf)cout<<"-1"<<endl;
        else cout<<d[b]<<endl;
    }
    return 0;
}

HDU 1847(Bellman-Ford)

时间: 2024-10-12 02:10:56

HDU 1847(Bellman-Ford)的相关文章

ACM/ICPC 之 最短路径-Bellman Ford范例(POJ1556-POJ2240)

两道Bellman Ford解最短路的范例,Bellman Ford只是一种最短路的方法,两道都可以用dijkstra, SPFA做. Bellman Ford解法是将每条边遍历一次,遍历一次所有边可以求得一点到任意一点经过一条边的最短路,遍历两次可以求得一点到任意一点经过两条边的最短路...如 此反复,当遍历m次所有边后,则可以求得一点到任意一点经过m条边后的最短路(有点类似离散数学中邻接矩阵的连通性判定) POJ1556-The Doors 初学就先看POJ2240吧 题意:求从(0,5)到

hdu 1847 Good Luck in CET-4 Everybody!

法一: 首先我们可以想到在面对3的时候是必败局,谁面对3时无论拿多少都会败 ! <---这是关键 那么就要尽量造成这样的局势给对方,因为任何不是3的倍数的数加1或2都可以变成3的倍数, 同理减去1或2也可以变成3的倍数,也就是说假设目前的个数不是3的倍数,那我肯定能把它 拿成3的倍数,比如现在是11个,那我拿走2个就变成9,这样就造成对方为3的倍数局势,那 么对方拿m个我都可以通过拿1或者2使总共一轮拿的数目成为3的倍数 #include<stdio.h> int main() { in

POJ 1860 Currency Exchange (Bellman ford)

Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 22405   Accepted: 8095 Description Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and pe

HDU 1847 Good Luck in CET-4 Everybody!(巴什博弈论)

题目地址:HDU 1847 这题可以用NP状态转换. 首先0的时候就代表无法出牌了,所以是必败态.然后根据每一个可以一步到达必败态的是必胜态,不可以一步到达必败态的是必败态.可以推出状态转移方程,然后用DP求解.即从已知状态向未知状态转移,就是从小的向大的转移,假如它的下一步没有必败态,则它是必败态,若下一步有一个必败态,那它就是必胜态. 代码如下: #include <iostream> #include <cstdio> #include <string> #inc

Bellman - Ford 算法解决最短路径问题

Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力不从心了,而Bellman - Ford算法可以解决这种问题. Bellman - Ford 算法可以处理路径权值为负数时的单源最短路径问题.设想可以从图中找到一个环路且这个环路中所有路径的权值之和为负.那么通过这个环路,环路中任意两点的最短路径就可以无穷小下去.如果不处理这个负环路,程序就会永远运

HDU 1847 Good Luck in CET-4 Everybody! (博弈论sg)

Good Luck in CET-4 Everybody! Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓"张弛有道"就是这个意思.这不,Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经. "升级"?"双扣"?"红五

[sg函数] hdu 1847 Good Luck in CET-4 Everybody!

 NET IIS7.5 创建站点时,如果发现以下错误,并且 默认站点访问没有问题的话, 可以尝试,进入 处理程序映射 右键恢复为父级,有可能会有意想不到的 惊喜. 我的问题就是这样解决的. 出现这种问题的关键:是你的站点没有可以处理的扩展. 如:*.asp, *.html, *.aspx等等 错误摘要 HTTP 错误 404.4 - Not Found 您要查找的资源没有与之关联的处理程序. 详细错误信息 模块 IIS Web Core 通知 MapRequestHandler 处理程序 尚

HDU 1847(floyd)

畅通工程续 高仿代码如下 #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int inf = 0x3f3f3f3f;#define N 205int d[N][N];void floyd(int n){    for(int k = 0;k < n;k++)    for(int i = 0;i <

Bellman—Ford算法思想

---恢复内容开始--- Bellman—Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题.对于给定的带权(有向或无向)图G=(V,E),其源点为s,加权函数w是边集E的映射.对图G运行Bellman—Ford算法的结果是一个布尔值,表明图中是否存在着一个从源点s可达的负权回路.若存在负权回路,单源点最短路径问题无解:若不存在这样的回路,算法将给出从源点s到图G的任意顶点v的最短路径值d[v] Bellman—Ford算法流程 分为三个阶段: (1)初始化:将除源点外的所有顶点