• A了一道dijkstra板子


    Dijkstra板子

    虽然不知道为什么这样写,但板子还是要有的

    void dij(int s){
    	memset(dis,0x3f,sizeof(dis));
    	memset(v,0,sizeof(v));
    	priority_queue<P,vector<P>,greater<P> > q;//如果是<P>的话,之后push就要(P){-dis[y],y}
    	q.push((P){0,s});
    	dis[s]=0;
    //	v[s]=1;这句一定不能有
    	while(!q.empty()){
    		P u=q.top();
    		q.pop();
    		int x=u.second;
    		if(dis[x]<u.first)continue;
    		for(int i=head[x];i;i=e[i].nex){
    			int y=e[i].to;
    			if(dis[y]>dis[x]+e[i].w){
    				dis[y]=dis[x]+e[i].w;
    				q.push((P){dis[y],y});
    			}
    		}
    	}
    }
    

    题目

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<utility>
    #include<cstring>
    using namespace std;
    
    typedef pair<int,int> P;
    const int MAXN=1000000+5;
    
    struct ed{
    	int w,to,nex;
    };
    
    ed e[MAXN];
    int dis[MAXN],v[MAXN],head[MAXN];
    int newp,n,m,s,t;
    
    void dij(int s);
    void Add(int p1,int p2,int w);
    
    int main(){
    	scanf("%d%d%d",&n,&m,&s);
    	for(int i=1;i<=m;++i){
    		int p1,p2,w;
    		scanf("%d%d%d",&p1,&p2,&w);
    		Add(p1,p2,w);
    		Add(p2,p1,w);
    	}
    //	scanf("%d",&s);
    	dij(s);
    	for(int i=1;i<=n;++i){
    		printf("%d ",dis[i]);
    	}
    //	putchar('
    ');
    //	printf("%d
    ",dis[t]);
    	return 0;
    }
    
    void Add(int p1,int p2,int w){
    	++newp;
    	e[newp].to=p2;
    	e[newp].w=w;
    	e[newp].nex=head[p1];
    	head[p1]=newp;
    }
    
    void dij(int s){
    	memset(dis,0x3f,sizeof(dis));
    	memset(v,0,sizeof(v));
    	priority_queue<P,vector<P>,greater<P> > q;
    	q.push((P){0,s});
    	dis[s]=0;
    //	v[s]=1;
    	while(!q.empty()){
    		P u=q.top();
    		q.pop();
    		int x=u.second;
    		if(dis[x]<u.first)continue;
    		for(int i=head[x];i;i=e[i].nex){
    			int y=e[i].to;
    			if(dis[y]>dis[x]+e[i].w){
    				dis[y]=dis[x]+e[i].w;
    				q.push((P){dis[y],y});
    			}
    		}
    	}
    }
    

    注释是用来A其他题的。。

  • 相关阅读:
    使用springboot方式配置监听器
    Socket实现服务端
    Tesseract 部署到centos遇到的坑
    Java 机器学习之K-mean
    Java springboot之Mongodb增删改查
    Vue 跳转
    nginx安装、部署前端、请求转发
    Vue 第十四章 Vue项目部署到tomcat服务器
    Vue 第十三章 watch属性和computed属性使用
    Vue 第十二章 命名视图实现经典布局
  • 原文地址:https://www.cnblogs.com/buringstraw/p/9940209.html
Copyright © 2020-2023  润新知