P1993 Little K's Farm

P1993 Little K's Farm

answer:

Farm a has at least c more crops than farm b;
this sentence shows: a-b> = c
can be transformed into b-a <=-c
add(a,b,-c)
farm a is more than farm b At most c units of crops are planted;
explanation: a-b <= c
add(b,a,c)
farm a and farm b have the same number of crops.
Description a-b <= 0
b-a <= 0
add(a,b,0)
add(b,a,0)

Code:

#include<bits/stdc++.h>
#define MAXN 50005 
#define inf int(16843009)
using namespace std;
int N,M,s,t;
struct edge{
    
    
    int v,w;
    edge(int v=0, int w=0):v(v),w(w){
    
    };
};
vector<edge> adj[MAXN];
int d[MAXN], cnt[MAXN];
bool inq[MAXN];

bool spfa(int s){
    
    
    memset(d, 1, sizeof(d));
    queue<int> q;
    d[s] = 0; q.push(s); inq[s] = 1;

    int u,v,w;
    while(!q.empty()){
    
     
        u = q.front(); q.pop(); inq[u] = 0;
        for(int i=0;i<adj[u].size();i++){
    
    
            v = adj[u][i].v; w = adj[u][i].w;
            if(d[u] + w < d[v]){
    
    
                d[v] = d[u] + w;
                cnt[v] = cnt[u] + 1;//cnt[v] = s->v最短路包含的边数 
                if(cnt[v] >= N+1) return 1;//判负环 
                if(inq[v]==0){
    
    
                    q.push(v); inq[v] = 1;
                }   
            }
        }
    }   
    return 0;
}

int main(){
    
    
	//freopen("P1993_2.in","r",stdin);
    scanf("%d%d", &N, &M);

    int d,u,v,w;
    for(int i=1;i<=M;i++){
    
    
    	cin>>d;
    	if(d==1)
    	{
    
    
    		scanf("%d%d%d", &v, &u, &w);
        	adj[v].push_back(edge(u,-w));
		}
    	else if(d==2)
    	{
    
    
    		scanf("%d%d%d", &v, &u, &w);
      		adj[u].push_back(edge(v,w));
		}
    	else if(d==3)
    	{
    
    
    		scanf("%d%d", &v, &u);
      		adj[u].push_back(edge(v,0));
      		adj[v].push_back(edge(u,0));
		}
        
    }

    s = 0;
    for(int i=1;i<=N;i++){
    
    
        adj[0].push_back(edge(i,0));
    }
    if(spfa(0)){
    
    
        printf("No\n");
    }
	else 
		cout<<"Yes"<<endl;
    return 0;
} 

Guess you like

Origin blog.csdn.net/qq_35975367/article/details/115190738