• 【模板】单源最短路径(标准版)


    #include <bits/stdc++.h>
    using namespace std;
    const int mn=1e5+7;
    const int mm=2e5+7;
    int fr[mn],nx[mm],to1[mm],to2[mm],tot=0,dis[mn],tt=0;
    bool p[mn];
    priority_queue< pair<int,int> > q;
    void add(int x,int y,int v)
    {
    	++tot;
    	nx[tot]=fr[x];
    	fr[x]=tot;
    	to1[tot]=y;to2[tot]=v;
    }
    int main()
    {
    	int n,m,s;
    	cin>>n>>m>>s;
    	for(int i=1;i<=m;++i)
    	{
    		int x,y,v;
    		scanf("%d%d%d",&x,&y,&v);
    		add(x,y,v);
    	}
    	memset(dis,63,sizeof(dis));
    	dis[s]=0;
    	q.push(make_pair(0,s));
    	while(q.size())
    	{
    		int x=q.top().second;q.pop();
    		if(p[x])  continue;
    		p[x]=1;
    		for(int j=fr[x];j;j=nx[j])
    		{
    			int y=to1[j],v=to2[j];
    			//if(p[y])  continue;
    			if(dis[y]>v+dis[x])
    			{
    				dis[y]=v+dis[x];
    				q.push(make_pair(-dis[y],y));
    			}
    		}
    	}
    	for(int i=1;i<=n;++i)
    	{
    		cout<<dis[i]<<" ";
    	}
    	return 0;
    }
    
  • 相关阅读:
    JS判断页面是否加载完成
    简单的前端验证码
    如何让旧浏览器支持HTML5新标签
    JSON使用(4)
    JSON语法(3)
    JSON简介(2)
    JSON教程(1)
    jQuery-noConflict()
    jQuery
    jQuery
  • 原文地址:https://www.cnblogs.com/org0/p/13935315.html
Copyright © 2020-2023  润新知