• Java实现 洛谷 P2024 [NOI2001]食物链


    在这里插入图片描述

    输入输出样例
    输入 #1

    100 7
    1 101 1
    2 1 2
    2 2 3
    2 3 3
    1 1 3
    2 3 1
    1 5 5
    

    输出 #1

    3
    
     
    import java.util.Scanner;
     
    public class Main {
    	static int x[],sum=0;
    public static void main(String[] args) {
    	Scanner sc=new Scanner(System.in);
    	int n=sc.nextInt();
    	int m=sc.nextInt();
    	x=new int[n*4];//储存祖宗,储存每个对象以及天敌,所捕食动物
    	for (int i = 0; i < x.length; i++) {
    		x[i]=i;
    	}
    	TO:
    	for (int i = 0; i <m; i++) {
    		int a=sc.nextInt();
    		int b=sc.nextInt();
    		int c=sc.nextInt();
    		if(c>n||b>n){
    			sum++;
    		
    			continue TO;
    		}
    		if(a==2){
    			if(c==b){
    				sum++;
    				continue TO;
    			}
    		}
    		if(a==1){
    			if(find(b+n)==find(c)||find(b+2*n)==find(c)){
    				sum++;
    				continue TO;
    			}else{
    				contic(b,c);contic(b+n,c+n);contic(b+2*n,c+2*n);
    			}
    		}
    		if(a==2){
    			if(find(b)==find(c)||find(b+2*n)==find(c)){
    				sum++;
    				continue TO;
    			}else{
    				contic(b+n,c);contic(b+2*n,c+n);contic(c+2*n,b);
    			}
    		}
    	}
    	System.out.println(sum);
    	
    }
    public static int find(int p){
    	return x[p]==p?p:find(x[p]);
    }
    public static void contic(int q,int p){
    	int Q=find(q);
    	int P=find(p);
    	if(Q==P){
    		return;
    	}
    	x[Q]=P;
    	
    }
    }
    
  • 相关阅读:
    Linux rm rf 命令
    Oracle时间戳转换日期
    PHP执行代码的步骤
    PHP字符串比较
    PHP调整图片大小
    PHP学习笔记2022年9月13日
    索引数组
    腾讯云安全组开放端口不生效的解决办法
    php中使用fsockopen实现异步请求
    创建ftp账户并赋予指定权限
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076130.html
Copyright © 2020-2023  润新知