zoj 3946 Highway Project

我TM建个前向星的双向边MAXN只开100005???还一直不报WA,一直以为我是哪里没考虑到。。。。

一定要注意数组大小了。思路很简单,从0到其他点的最短路距离是一定的,那要求最小花费,那就边跑最短路边更新最小花费呗。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<string>
#include<set>
#include<algorithm>
#include<vector>
#include<queue>
#include<list>
#include<cmath>
#include<cstring>
#include<map>
#include<stack>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 200005
#define ull unsigned long long
#define ll long long
#define hashmod 99999839
#define mod 7
#define repe(x,y,i) for(i=x;i<=y;++i)
#define repne(x,y,i) for(i=x;i<y;++i)
#define MAX(x,y) (x) < (y) ? (y) : (x);
#define MIN(x,y) (x) < (y) ? (x) : (y);
int n,m,x,y,d,c;
struct edge{
    int to,d,c,next;
}G[maxn];
int head[maxn],len;
ll dis[maxn],micost[maxn];
bool vis[maxn];
void addedge(){
    G[len].to = y,G[len].d = d,G[len].c = c,G[len].next = head[x];
    head[x] = len;
    len++;
    G[len].to = x,G[len].d = d,G[len].c = c,G[len].next = head[y];
    head[y] = len;
    len++;
}
void SPFA(){
    queue<int> q;
    memset(dis,0x3f,sizeof(dis));
    memset(micost,0x3f,sizeof(micost));
    memset(vis,false,sizeof(vis));
    q.push(0);
    dis[0] = micost[0] = 0;
    vis[0] = true;
    while(!q.empty()){
        int v = q.front();
        q.pop();
        vis[v] = false;
        for(int i = head[v];i != -1;i = G[i].next){
            edge& t = G[i];
            if(dis[t.to] > dis[v] + t.d){
                dis[t.to] = dis[v] + t.d;
                micost[t.to] = t.c;
                if(!vis[t.to]) q.push(t.to);
            }
            else if(dis[t.to] == dis[v] + t.d && micost[t.to] > t.c) micost[t.to] = t.c;
        }
    }
}
int main(){
  //  freopen("a.in","r",stdin);
  //  freopen("b.out","w",stdout);
    int T;
    register int i,j;
    cin >> T;
    while(T--){
        scanf("%d%d",&n,&m);
        memset(head,-1,sizeof(head));
        len = 0;
        repe(1,m,i){
            scanf("%d%d%d%d",&x,&y,&d,&c);
            addedge();
        }
        SPFA();
        ll sc,st;
        sc = st = 0;  
        repne(0,n,i) st += dis[i],sc += micost[i];
        printf("%lld %lld\n",st,sc);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/zhuiyicc/p/9558600.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值