zoukankan      html  css  js  c++  java
  • luogu P2939 [USACO09FEB]Revamping Trails G 分层最短路

    #include<map>
    #include<queue>
    #include<stack>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    template<typename int_t>//据说可以自动判断输入的类型
    void read(int_t& x)
    {
    	x=0; int_t k=1; char ch=0;
    	while(ch<'0'||ch>'9') {ch=getchar();if(ch=='-') k=-1;}
    	while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
    	x*=k;
    }
    const int N=4200010;
    int e[N],ne[N],w[N],idx,h[N];
    int vis[N],dist[N];
    int n,m,k;
    int a,b,c;
    void add(int a,int b,int c)
    {
    	e[idx]=b;
    	w[idx]=c;
    	ne[idx]=h[a];
    	h[a]=idx++;
     } 
    void dijkstra()
    {
    	memset(dist,0x3f,sizeof(dist));
    	dist[1]=0;
    	memset(vis,0,sizeof vis);
    	priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > points;
    	points.push(make_pair(0,1));
    	while(!points.empty())
    	{
    		int u=points.top().second;
    		points.pop();
    		if(!vis[u])
    		{
    			vis[u]=1;
    			for(int i=h[u]; ~i; i=ne[i])
    			{
    				int to=e[i];
    				if(dist[to]>dist[u]+w[i])
    				{
    					dist[to]=dist[u]+w[i];
    					points.push(make_pair(dist[to],to));
    				}
    			}
    		}
    	}
    }
    int main()
    {
    	memset(h,-1,sizeof h);
    	cin>>n>>m>>k;
    	for(int i=1; i<=m; i++)
    	{
    		cin>>a>>b>>c;
    		add(a,b,c);
    		add(b,a,c);
    		for(int j=1; j<=k; j++)
    		{
    			add(a+(j-1)*n,b+j*n,0);
    			add(b+(j-1)*n,a+j*n,0);
    			add(a+j*n,b+j*n,c);
    			add(b+j*n,a+j*n,c);
    		}
    	}
    	dijkstra();
    	int ans=dist[n];
    	for(int i=1;i<=k;i++)
    		ans=min(ans,dist[n+i*n]);
    	cout<<ans<<endl;
    	return 0;
    }
    
    
  • 相关阅读:
    每天一个设计模式(2):观察者模式
    每天一个设计模式(1):策略模式
    每天一个设计模式(0):设计模式概述
    常量池、栈、堆的比较
    常量池小结
    Java虚拟机体系结构分析
    Java并发(3):volatile及Java内存模型
    第一题:Big Countries
    22 高级SQL特性
    21 使用游标
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12915477.html
Copyright © 2011-2022 走看看