• 饥饿 牛客小白月赛10


    链接:https://ac.nowcoder.com/acm/contest/280/D
    来源:牛客网
     

    题解:傻逼B zi题,是1代表可以存边,此路无疯狗,需要注意的是邻接表存边,临界数组放不下。

    代码,

    /*傻逼板子*/
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #include<iostream>
    using namespace std;
    #define int long long
    const int maxn=1000005;
    const int inf=0x3f3f3f3f;
    struct Edge{
    	int v,w;//w为距离
    	int next;
    };
    Edge edge[maxn];//边编号  从1开始
    struct qnode{    //堆优化
        int u;	//起点
        int w;//距离
        qnode(int u=0,int w=0):u(u),w(w){}
    	bool operator < (const qnode& a) const{
    	return w>a.w;
    	}
    };
    int dis[maxn];
    int head[maxn];
    bool vis[maxn];
    int x[maxn],y[maxn],z[maxn];
    int n,m,s,t;
    int size;
    void add_edge(int u,int v,int w){//邻接表加边
    	  edge[size].v=v;
    	  edge[size].w=w;
    	  edge[size].next=head[u];
    	  head[u]=size;
    	  size++;
    }
    void dijkstra(int s){
    	priority_queue<qnode>q;
    	while(!q.empty())
    	q.pop();
        q.push(qnode(s,0));
    	dis[s]=0;
    
    	while(!q.empty()){
    		qnode t=q.top();
    		q.pop();
    		int u=t.u;
    		if(vis[u])continue;
    		vis[u]=true;
    		for(int i=head[u];i!=-1;i=edge[i].next){
    			int v=edge[i].v;
    			int w=edge[i].w;
    			if(!vis[v]&&dis[v]>dis[u]+w){
    				dis[v]=dis[u]+w;
    				q.push(qnode(v,dis[v]));
    			}
    		}
    	}
    }
    signed main(){
    	size=1;
    	scanf("%d%d%d%d",&n,&m,&s,&t);
    	for(int i=1;i<=n;i++){//初始化
    		head[i]=-1;
    		dis[i]=inf;
    		vis[i]=false;
    	}
    	for(int i=1;i<=m;i++){
    		int x;
    		cin>>x;
    		int aa,bb,cc;
    		cin>>aa>>bb>>cc;
    		if(x==1){
    			add_edge(aa,bb,cc);
    			add_edge(bb,aa,cc);
    	    }
    	}
    
        dijkstra(s);
        int ans=dis[t];
    	printf("%d
    ",ans);
    	return 0;
    }
    

     

    题目描述

    夕阳西下,匆匆忙忙间,SSJ一天的课程已经全部上完了,肚子咕咕开始叫了,坐上回家的公交车,可是SSJ今天好像有点迷,据说今中午吃饭时没去食堂,走着走着,外边景色好美啊,啊?我好像没走过这,完了,我好想迷路了。
    公交车到了终点站,SSJ下车了,内心无比紧张,回不去了,一阵冷风吹过,瑟瑟发抖,emm...,那是一张地图?地图上有啥大家都明白,SSJ现在已经饿得无力思考了,请你帮他设计一条最快回家的路下,他要快点回家吃xxx。

    输入描述:

    第一行四个数n,m,s,t。(分别表示有地图上n个地点,m条道路,SSJ在s处,他家在t处)第2-m+1三个正整数,f,u(某条路起点),v(到达点),w(路径距离)。(f为1或0,0表示这条道路上有恶狗拦路,SSJ已无力与恶狗打斗了,所以他要避开这些道路,1表示此条道路无危险)。

    输出描述:

    第一行一个数表示最短路径长度,若无法回家输出“My gold!!!”(无引号)若可以回家.

    示例1

    输入

    复制

    5 7 1 5
    0 1 4 4
    1 1 3 2
    1 1 5 7
    1 2 5 10
    0 2 3 1
    1 3 5 2
    1 4 3 7

    输出

    复制

    4

    备注:

    n≤10000,m≤200000,w≤5000000
  • 相关阅读:
    使用Fiddler和雷电模拟器抓取安卓https请求
    Robot Framework -- 安装接口测试库
    Robot Framework --为了进行Web测试,安装SeleniumLibrary外部库
    robotframework+python3+eclipse+RED自动化测试框架初学笔记
    LeetCode Weekly Contest 27
    LeetCode Weekly Contest 26
    京东4.7实习笔试题
    牛客网模拟笔试 2
    4.1几道最近的题目
    网易3.25实习笔试
  • 原文地址:https://www.cnblogs.com/UUUUh/p/10284035.html
Copyright © 2020-2023  润新知