zoukankan      html  css  js  c++  java
  • 最短路模板(SPFA POJ2387)

    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <math.h>
    #include <bitset>
    #include <vector>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #define MAXN 1010100
    #define LL long long
    #define fi first
    #define se second
    #define mp make_pair
    #define pb push_back
    #define ll __int64
    #define INF 0x7fffffff
    #define cs(s) freopen(s,"r",stdin)
    #define mem(x) memset(x,0,sizeof(x))
    #define PI acos(-1)
    #define eps 1e-10
    using namespace std;
    int gcd(int a,int b){return b?gcd(b,a%b):a;}
    int lcm(int a,int b){return a/gcd(a,b)*b;}
    LL powmod(LL a,LL b,LL MOD){LL ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
    //head
    const int maxn=2021;
    int n,m,inq[maxn],dis[maxn];
    vector<pair<int,int> >v[maxn];
    int main(){
    	// freopen("in.txt","r",stdin);
    	// freopen("out.txt","w",stdout);
    	ios::sync_with_stdio(false);
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		int a,b,w;
    		cin>>a>>b>>w;
    		v[a].pb(mp(b,w));
    		v[b].pb(mp(a,w));
    	}
    	queue<int>p;
    	p.push(1);
    	inq[1]=1;
    	for(int i=1;i<=max(n,m);i++)dis[i]=INF;
    	dis[1]=0;
    	while(!p.empty()){
    		int now=p.front();
    		p.pop();
    		inq[now]=0;
    		for(int i=0;i<v[now].size();i++){
    			int ne=v[now][i].fi;
    			if(dis[now]+v[now][i].se<dis[ne]){
    				dis[ne]=dis[now]+v[now][i].se;
    				if(!inq[ne]){
    					inq[ne]=1;
    					p.push(ne);
    				}
    			}
    		}
    	}
    	cout<<dis[m];
    	return 0;
    }
    
    
  • 相关阅读:
    JAVA程序员面试之《葵花宝典》
    61条Java面向对象设计的经验原则
    悟透JavaScript
    61条Java面向对象设计的经验原则
    悟透JavaScript
    SQL与Oracle数据库镜像对比
    21条SQL Server数据库开发经验
    VB开发——复制Excell表格
    国外Web2.0介绍
    关于RSS
  • 原文地址:https://www.cnblogs.com/pubgoso/p/10759734.html
Copyright © 2011-2022 走看看