这道题可以说是一个复活SPFA的题

因为数据比较小,SPFA也比较简单

那就复习(复读)一次SPFA吧

#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue> using namespace std; int bj=;
struct edge{
int next,to,dis;
};
int d[];
int head[];
int dm,p,c,f,s;
int rd[];
edge e[];
int vis[];
int size;
int mmx=-; void spfa(int x) //本题n(c),m(p+s)极小,因此SPFA在最坏复杂度下O(mn)也不会炸
{
queue <int> q;
q.push(x);
vis[s]=;//SPFA易忘操作,标记这个点是否在队中,如果不标记可能会出现死循环
while(!q.empty())
{
int t=q.front();
q.pop();
if(rd[t]>=*(c+p+f)) //当出现环的时候一般取一个点入队(n+m)次优化效率,为了防止毒瘤出题人*了2
{
bj=;
break;
}
vis[t]=;
int i,j,k;
for(i=head[t];i;i=e[i].next)
{
j=e[i].to;
k=e[i].dis;
if(d[t]-k+dm>d[j]) //至于不能取d[t]-k+d[j]>d[j]的原因是有可能d[j]包含了d[t]
{
d[j]=d[t]-k+dm;
rd[j]++;
if(vis[j]) continue;
vis[j]=;
q.push(j);
}
}
}
}
void addedge(int next,int to,int dis)
{
e[++size].next=head[next];
e[size].to=to;
e[size].dis=dis;
head[next]=size;
}
int main()
{
scanf("%d %d %d %d %d",&dm,&p,&c,&f,&s);
int i,j;
for(i=;i<=p;i++)
{
int t1,t2;
scanf("%d %d",&t1,&t2);
addedge(t1,t2,); //题上说了没有花费
}
for(i=;i<=c;i++) d[i]=dm;
for(i=;i<=f;i++)
{
int t1,t2,t3;
scanf("%d %d %d",&t1,&t2,&t3);
addedge(t1,t2,t3);
}
spfa(j);
if(bj==) //如果出现环
{
printf("-1 \n");
return ;
}
if(!bj) //如果没有
{
for(i=;i<=c;i++)
mmx=max(d[i],mmx);
}
printf("%d",mmx);
return ;
}

洛谷 P1938 [USACO09NOV] 找工就业Job Hunt的更多相关文章

  1. 洛谷 1938 [USACO09NOV]找工就业Job Hunt

    洛谷 1938  [USACO09NOV]找工就业Job Hunt 题目描述 Bessie is running out of money and is searching for jobs. Far ...

  2. P1938 [USACO09NOV]找工就业Job Hunt

    P1938 [USACO09NOV]找工就业Job Hunt给边赋予价值,入边的权值为D-Ti,然后从起点开始跑最长路,如果钱的总数超过了D*C,也就是一定有一个城市走了两遍,则有正环,则输出-1 # ...

  3. luogu P1938 [USACO09NOV]找工就业Job Hunt

    题目描述 奶牛们正在找工作.农场主约翰知道后,鼓励奶牛们四处碰碰运气.而且他还加了一条要求:一头牛在一个城市最多只能赚D(1≤D≤1000)美元,然后它必须到另一座城市工作.当然,它可以在别处工作一阵 ...

  4. 题解【洛谷P1938】 [USACO09NOV]找工就业Job Hunt

    题面 题解 将路径连边\((x, y, d)\) ,将航线连边\((x, y, d - w)\).其中线路是从\(x\)到\(y\),航线的费用为\(w\),\(d\)的含义如题面. 跑一遍\(SPF ...

  5. [Luogu1938][USACO09NOV]找工就业Job Hunt

    原题链接:https://www.luogu.org/problem/show?pid=1938 这一道题有一个比较难的点就是,这一张图上,是点上有权.既然点上有权的话,我们就不好一下子使用最短路了. ...

  6. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  7. 洛谷p3398仓鼠找suger题解

    我现在爱死树链剖分了 题目 具体分析的话在洛谷blog里 这里只是想放一下改完之后的代码 多了一个son数组少了一个for 少了找size最大的儿子的for #include <cstdio&g ...

  8. 洛谷P1938 找工就业

    传送门啦 这个题本质就是跑一边最长路,重点就是在怎么建图上. 我们可以把点权放到边权上面,即将每一个边的终点点权当做这个边的边权,这个题里就是将工钱 $ d $ 当做边权. 如果这一条边需要坐飞机才能 ...

  9. luogu P1938找工就业

    一头牛在一个城市最多只能赚D元,然后它必须到另一个城市工作.当然它可以在别处工作一阵子后,又回到原来的城市再最多赚D美元.而且这样的往返次数没有限制城市间有P条单向路径,共有C座城市,编号1~C,奶牛 ...

随机推荐

  1. 基于Tcp协议的上传下载

    目录格式: 构建此目录就可随意使用! client端 import socket import sys import os import json import struct sk = socket. ...

  2. 大数模板 (C ++)

    上次BC遇到一个大数题目,没有大数模板和不会使用JAVA的同学们GG了,赛后从队友哪里骗出大数模板.2333333,真的炒鸡nice(就是有点长),贴出来分享一下好辣. //可以处理字符串前导零 #i ...

  3. Discovering Gold LightOJ - 1030 || 概率与期望求法区别

    #include<cstdio>//wrong_codes #include<algorithm> using namespace std; ],anss; ],T,TT,n, ...

  4. h5-15-svg格式图片

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. Datapatch AND What to do if the status of a datapatch action was not SUCCESS due to finding non-ignorable errors

    1. Enterprise Manager: Starting version 12.1 Enterprise Manager now calls datapatch to complete post ...

  6. Unity项目学习笔记

    1.TCP和IP IP:主要作用是在复杂的网络环境中将数据包发送给的最终的目标地址. 端口号:系统会分给系统端口号  一般知名的端口号在0-1023之间,而我们经常使用的自定义/动态分配的端口号则一般 ...

  7. 高阶组件(Higher-Order Components)

    有时候人们很喜欢造一些名字很吓人的名词,让人一听这个名词就觉得自己不可能学会,从而让人望而却步.但是其实这些名词背后所代表的东西其实很简单. 我不能说高阶组件就是这么一个东西.但是它是一个概念上很简单 ...

  8. 获取第三方软件的包名、入口Activity的类名

    要启动指定的第三方软件,需要知道第三方软件的包名.类名. 获取第三方软件包名.类名的两种方法: 1.使用aapt aapt是sdk自带一个工具,在 Sdk\builds-tools 目录下 .如果没有 ...

  9. 享元模式及php实现

    享元模式: 享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用.由于享元模式要求 ...

  10. 生成器的send方法

    send 和next区别 next:唤醒并继续执行 send:唤醒并继续执行 发送信息到生成器内部. def fib(max): n,a,b = 0,0,1 while n < max: msg ...