zoukankan      html  css  js  c++  java
  • 链式前向星+迪杰特斯拉堆优化

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=19999;
    int n,m,s,t;
    struct edge{
    	int nxt,to,w;
    }d[maxn];//链式前向星 
    struct node{
    	int num,x;
    	bool operator <(const node &tmp)const{
    		return x>tmp.x;
    	} //为了优先队列 
    }temp;
    int dis[maxn],head[maxn],cnt=1;
    void add(int u,int v,int w){
    	d[cnt].to=v;
    	d[cnt].nxt=head[u];
    	d[cnt].w=w;
    	head[u]=cnt++;
    }//加边
    int vis[maxn];
    void dij(int s)//迪杰特斯拉
    {
    	priority_queue<node>q;
    	memset(dis,20,sizeof(dis));
    	dis[s]=0;
    	temp.num=s;temp.x=0;q.push(temp);
    	while(!q.empty()){
    		node ans=q.top();
    		q.pop();
    		if(dis[ans.num]!=ans.x)		continue;
    		if(vis[ans.num])	continue;
    		vis[ans.num]=1;
    		for(int i=head[ans.num];i;i=d[i].nxt)
    		{
    			edge e=d[i];
    			if(dis[e.to]>dis[ans.num]+e.w){
    				dis[e.to]=dis[ans.num]+e.w;
    				if(vis[e.to])	continue;
    				temp.num=e.to,temp.x=dis[e.to];
    				q.push(temp);
    			}
    		}
    	}
    	return;
    } 
    int main()
    {
    	cin>>n>>m>>s>>t;
    	for(int i=1;i<=m;i++)
    	{
    		int l,r,t;
    		cin>>l>>r>>t;
    		add(l,r,t);
    		add(r,l,t);
    	}
    	dij(s);
    	cout<<dis[t];
    }
    
  • 相关阅读:
    https-->http and http-->https bitransfer
    socat
    docker daemon configuration
    centos 7 update to python V3.43 to assure git clone as usual
    df and du
    SS iproute2,nslookup,dig
    jmxtrans
    web.xml之env-entry
    Java发送Http请求
    elasticsearch在CentOS环境下开机启动
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12679617.html
Copyright © 2011-2022 走看看