• 6.1浇水次数


    这个就是从最后面开始浇水的,会使这条路上的所有沟都有水,可以用dfs做

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<math.h>
    #include<vector>
    #include<map>
    #include<set>
    #include<queue>
    #define E 2.718281828459
    #define sf scanf
    #define scf(x) scanf("%d",&x)
    #define scfff(x,y,z) scanf("%d%d%d",&x,&y,&w)
    #define pf printf
    #define prf(x) printf("%d
    ",x)
    #define mm(x,b) memset((x),(b),sizeof(x))
    #define rep(i,a,n) for (int i=a;i<n;i++)
    #define per(i,a,n) for (int i=a;i>=n;i--)
    #define pb push_back
    void in(int &x){int f=1;x=0;char s=getchar();
    while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
    while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}x*=f;}
    typedef long long ll;
    const ll mod=1e9+100;
    const double eps=1e-8;
    using namespace std;
    const double pi=acos(-1.0);
    const int inf=0xfffffff;
    const int N=1e5+5;
    int vis[N]; 
    struct Edge
    {
     	    int w,to;
    		Edge(int x=0,int y=0){to=x;w=y;	}
    }t;
    vector<Edge> v[N];
    int dfs(int x,int w)//这个节点的编码,和到这个点的沟是不是干的
    {
    	vis[x]=1;
    	int ans=0;
    	rep(i,0,v[x].size())
    	{
    		int tt=0;
    		t=v[x][i];
    		if(vis[t.to]) continue;如果找过
    		if(v[t.to].size()==0&&t.w==2)//如果是叶子节点了,且到这个节点的沟没水,那么答案加一
    		{
    			ans++;
    			w=0;
    		}else if(v[t.to].size())
    		{
    			if(t.w== 1)
    				tt=dfs(t.to,0);
    			else
    				tt=dfs(t.to,1);
    			if(tt)
    			w=0;//如果下一个浇过水了,那么之前这条沟就有水了
    		}
    		ans+=tt;
    	}
    	if(w)
    	ans++;
    	return ans;
    }
    
    int main()
    {
    	mm(vis,0);
    	int n;
    	scf(n);
    	rep(i,1,n)
    	{
    		int x,y,w;
    		in(x);in(y);in(w); 
    		v[x].pb(Edge(y,w));
    		v[y].pb(Edge(x,w));
    	}
    	int ans=dfs(1,0);
    	prf(ans);
    	return 0;
    }
    
  • 相关阅读:
    电脑不能连接到热点
    常用网络协议
    HVV面试
    【转载】hacker术语
    渗透测试学习路线
    系统安全——可信计算
    rsync文件同步详解
    rabbitmq集群部署高可用配置
    ansible自动化部署之路笔记
    ELK-elasticsearch-6.3.2部署
  • 原文地址:https://www.cnblogs.com/wzl19981116/p/10087290.html
Copyright © 2020-2023  润新知