zoukankan      html  css  js  c++  java
  • [bzoj1574][Usaco2009 Jan]地震损坏Damage_dfs

    地震损坏Damage bzoj-1574 Usaco-2009 Jan

    题目大意题目链接。

    注释:略。


    想法

    显然对于每一个report点,和它直接相连的点都不可能到达1。我们将它打上标记。

    然后爆搜。不搜经过的店,不搜标记的点。

    显然,这样所有可以被到达的点都符合题意,用n减一下就行了。

    最后,附上丑陋的代码... ...

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define N 30010 
    #define M 100010 
    int head[N],nxt[M<<1],to[M<<1],tot;
    inline void add(int x,int y) {to[++tot]=y; nxt[tot]=head[x]; head[x]=tot;}
    inline void Add(int x,int y) {add(x,y); add(y,x);}
    bool cut[N];
    bool vis[N];
    void dfs(int pos)
    {
    	vis[pos]=1;
    	for(int i=head[pos];i;i=nxt[i]) if(!cut[to[i]]&&!vis[to[i]])
    	{
    		dfs(to[i]);
    	}
    }
    int main()
    {
    	int n,m,p;
    	scanf("%d%d%d",&n,&m,&p);
    	int a,b,x;
    	for(int i=1;i<=m;++i)
    	{
    		scanf("%d%d",&a,&b);
    		Add(a,b);
    	}
    	while(p--)
    	{
    		scanf("%d",&x);
    		for(int i=head[x];i;i=nxt[i])
    			cut[to[i]]=1;
    	}
    	dfs(1);
    	int ans=n;
    	for(int i=1;i<=n;++i)
    		if(vis[i])
    			--ans;
    	printf("%d",ans);
    	return 0;
    }
    

    小结:做问题时,如果已经得到了一种非常显然的结论,不要停止。尝试可不可能通过这个结论解出这个题或者直接得到更优美的结论。

  • 相关阅读:
    发送带有正文以及附件的邮件
    软件测试笔记
    java开发 中台
    postman测试带有json数据格式的字段
    maven详解之仓库
    Maven与nexus关系
    占位
    Vue项目碰到"‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件"报错
    了解facade设计模式
    postman使用
  • 原文地址:https://www.cnblogs.com/ShuraK/p/9669510.html
Copyright © 2011-2022 走看看