zoukankan      html  css  js  c++  java
  • 【BZOJ3436】小K的农场(差分约束)

    【BZOJ3436】小K的农场(差分约束)

    题面

    由于BZOJ巨慢无比,使用洛谷美滋滋

    题解

    傻逼差分约束题,
    您要是不知道什么是差分约束
    您就可以按下(Ctrl+W)

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<vector>
    #include<stack>
    #include<queue>
    using namespace std;
    #define MAX 20000
    inline int read()
    {
    	int x=0,t=1;char ch=getchar();
    	while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    	if(ch=='-')t=-1,ch=getchar();
    	while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    	return x*t;
    }
    struct Line
    {
    	int v,next,w;
    }e[MAX<<1];
    int h[MAX],cnt=1;
    int n,m,dis[MAX],InQ[MAX];
    bool vis[MAX];
    inline void Add(int u,int v,int w)
    {
    	e[cnt]=(Line){v,h[u],w};
    	h[u]=cnt++;
    }
    void SPFA()
    {
    	stack<int> Q;
    	for(int i=1;i<=n;++i)Q.push(i),dis[i]=0,InQ[i]=1,vis[i]=true;
    	while(!Q.empty())
    	{
    		int u=Q.top();Q.pop();
    		for(int i=h[u];i;i=e[i].next)
    		{
    			int v=e[i].v;
    			int w=dis[u]+e[i].w;
    			if(dis[v]<w)
    			{
    				dis[v]=w;
    				if(!vis[v])
    				{
    					vis[v]=true;
    					InQ[v]++;
    					Q.push(v);
    					if(InQ[v]==n)
    					{
    						puts("No");
    						return;
    					}
    				}
    			}
    		}
    		vis[u]=false;
    	}
    	puts("Yes");
    }
    int main()
    {
    	n=read();m=read();
    	for(int i=1;i<=m;++i)
    	{
    		int opt=read();
    		if(opt==1)
    		{
    			int a=read(),b=read(),c=read();
    			Add(b,a,c);
    		}
    		else if(opt==2)
    		{
    			int a=read(),b=read(),c=read();
    			Add(a,b,-c);
    		}
    		else
    		{
    			int a=read(),b=read();
    			Add(a,b,0);Add(b,a,0);
    		}
    	}
    	SPFA();
    	return 0;
    }
    
    
  • 相关阅读:
    作业
    动手动脑
    作业
    《大道至简》第二章读后感
    《大道至简》第一章读后感
    局域网内网站发布(三)
    局域网内网站发布(二)
    局域网内网站发布(一)
    管理系统
    台式机没有声音
  • 原文地址:https://www.cnblogs.com/cjyyb/p/7725998.html
Copyright © 2011-2022 走看看