洛谷P1993 小 K 的农场(查分约束)
/*
加深一下对查分约束的理解
建图的时候为了保证所有点联通 虚拟一个点
它与所有点相连 权值为0
然后跑SPFA判负环
这题好像要写dfs的SPFA 要不超时
比较懒 改了改重复进队的条件~
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define maxn 40010
using namespace std;
int n,m,num,head[maxn],dis[maxn],f[maxn],c[maxn],falg;
struct node{
int v,t,pre;
}e[maxn];
queue<int>q;
void Add(int from,int to,int dis){
num++;e[num].v=to;
e[num].t=dis;
e[num].pre=head[from];
head[from]=num;
}
void SPFA(){
memset(dis,/,sizeof(dis));
f[n+]=;dis[n+]=;
q.push(n+);c[n+]++;
while(!q.empty()){
int k=q.front();q.pop();
if(c[k]>n){
falg=;break;
}
f[k]=;
for(int i=head[k];i;i=e[i].pre){
int v=e[i].v;
if(dis[v]>dis[k]+e[i].t){
dis[v]=dis[k]+e[i].t;
if(f[v]==){
f[v]=;c[v]++;
q.push(v);
}
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
int w,x,y,z;
for(int i=;i<=m;i++){
scanf("%d",&w);
if(w==){
scanf("%d%d%d",&x,&y,&z);
Add(y,x,-z);
}
if(w==){
scanf("%d%d%d",&x,&y,&z);
Add(x,y,z);
}
if(w==){
scanf("%d%d",&x,&y);
Add(x,y,);Add(y,x,);
}
}
for(int i=;i<=n;i++)Add(n+,i,);
SPFA();
if(!falg)printf("Yes\n");
else printf("No\n");
return ;
}
洛谷P1993 小 K 的农场(查分约束)的更多相关文章
- 题解—— 洛谷 p1993 小K的农场(差分约束&负环判断)
看到题就可以想到差分约束 判断负环要用dfs,bfs-spfa会TLE 4个点 bfs-spfa #include <cstdio> #include <algorithm> ...
- 洛谷P1993 小K的农场_差分约束_dfs跑SPFA
Code: #include<cstdio> #include<queue> using namespace std; const int N=10000+233; const ...
- 洛谷 P1993 小K的农场 解题报告
P1993 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...
- 洛谷 P1993 小K的农场
P1993 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...
- 洛谷P1993 小K的农场 [差分约束系统]
题目传送门 小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b ...
- 洛谷P1993 小 K 的农场
题目描述 小 K 在 Minecraft 里面建立很多很多的农场,总共 n 个,以至于他自己都忘记了每个 农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m 个),以下列三种形式描 述: 农场 ...
- 『题解』洛谷P1993 小K的农场
更好的阅读体验 Portal Portal1: Luogu Description 小\(K\)在\(\mathrm MC\)里面建立很多很多的农场,总共\(n\)个,以至于他自己都忘记了每个农场中种 ...
- 洛谷P1993 小K的农场
思路是差分约束+dfs版SPFA. 首先来思考差分约束的过程,将题目给出的式子进行转化: 农场a比农场b至少多种植了c个单位的作物, SPFA我们考虑跑最短路,那么要让SPFA中满足的式子就是if(d ...
- 洛谷 P1993 小K的农场 题解
每日一题 day55 打卡 Analysis 这是我们一次考试的T1,但我忘了差分约束系统怎么写了,所以就直接输出Yes混了60分 首先转化题目: 1:表示农场 a 比农场 b 至少多种植了 c 个单 ...
随机推荐
- Why is 0[0] syntactically valid in javascript?
Why is 0[0] syntactically valid in javascript? 原文链接 偶然在一篇帖子中看到了这个问题,所以打算记录一下. var a = 0[0]; console. ...
- C语言学习之笔记
第一章 概述 1. C语言的特点 ①语言简洁.紧凑,使用方便.灵活.共有32个关键字(也称保留字),9种控制语句. ②运算符丰富,共有34种运算符. ③数据结构丰富,数据类型有:整型.实型.字符型.数 ...
- 运行在TQ2440开发板上以及X86平台上的linux内核编译
一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...
- Maximum Submatrix 2
Codeforces Round #221 (Div. 1) B:http://codeforces.com/problemset/problem/375/B 题意:给你一个n*m的0,1矩阵,你可以 ...
- Android NetWorkUtil
package com.android.hcframe.netdisc.util; import java.io.BufferedReader; import java.io.InputStreamR ...
- 【Linux】鸟哥的Linux私房菜基础学习篇整理(四)
1. VI按键说明.(1)移动光标的方法h或向左箭头:光标向左移动一个字符:j或向下箭头:光标向下移动一个字符:k或向上箭头:光标向上移动一个字符:l或向右箭头:光标向右移动一个字符:进行多次移动,如 ...
- jQuery validate运作流程以及重复提示错误问题
一,运作流程 jQuery validate要想运作,首先要加载相应的js <script type="text/javascript" src="/js/clas ...
- bzoj2006
论将区间和转化为前缀和的重要性这题一旦转化为前缀和就非常明了了一段区间[l,r]的美妙程度就等于s[r]-s[l-1]对于这种无法计算出所有方案而取前k大的题目,我们一般分类别然后利用类别内的单调性用 ...
- 【video】m3u8
Safari浏览器识别不了.UC浏览器可以识别. 优酷的Safari浏览器和UC浏览器都可以识别.
- Watch OS2.0开发概述
(注:尊重劳动成果,转载请注明出处 http://www.cnblogs.com/xiaochunle/p/4620230.html ) Watch OS 2.0时代 北京时间2015年6月9日,WW ...