做网站网站制作,如何给企业做网络推广,做网站常用的插件,联通营业厅做网站维护Acwing 240. 食物链 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示
#include <iostream>using namespace std;const int N 50010;int n, m;
int p[N], d[N]; //p[]是并查集的father,d[]是距离int find(int x) {if (p[x] ! x) { //如果说x不是树根的话int t f…
Acwing 240. 食物链
题目描述
思路讲解
代码展示
题目描述
思路讲解
代码展示
#include<iostream>usingnamespace std;constint N =50010;int n, m;int p[N], d[N];//p[]是并查集的father,d[]是距离intfind(int x){if(p[x]!= x){//如果说x不是树根的话int t =find(p[x]);d[x]+= d[p[x]];p[x]= t;}return p[x];}intmain(){scanf("%d%d",&n,&m);for(int i =1; i <= n; i++) p[i]= i;//初始化int res =0;while(m--){int t, x, y;scanf("%d%d%d",&t,&x,&y);if(x > n || y > n) res++;else{int px =find(x), py =find(y);if(t ==1){if(px == py &&(d[x]- d[y])%3) res++;elseif(px != py){p[px]= py;d[px]= d[y]- d[x];}}else{if(px == py &&(d[x]- d[y]-1)%3) res++;elseif(px != py){p[px]= py;d[px]= d[y]+1- d[x];}}}}printf("%d\n", res);return0;}