鉴于如此一道恶心的题,作者还花了一个晚上草草学了tarjan。


于是乎,这道题就是道tarjan
具体怎么实现呢?正解上有个什么树形DP,看的我一脸懵逼。
这道题可以运用到tarjan一个高科技的算法叫——割点。
这里就不再介绍怎么打tarjan了,切入正题。
我们先回忆下割点。
也就是在一个无向图中,将一个点G及其相关的边全部扔掉,会使这个图不在联通,便称点G为割点(作者个人理解)
看完上面的,是不是感觉和题目大意有点相像?

我先在做tarjan的同时可以很轻松的求得其子节点的数量,从而得知联通块的大小(如蓝色圆圈{\color{Blue} 蓝色圆圈}蓝色圆圈,紫色圆圈{\color{purple} 紫色圆圈}紫色圆圈及橙色圆圈{\color{orange} 橙色圆圈}橙色圆圈)然后很自然的就能求出子节点的方案数
由上面,也很容易推出绿色圆圈{\color{green} 绿色圆圈}绿色圆圈的方案数

#include<cstdio>
#include<algorithm>
#define N 50001
using namespace std;
int n,m,i,x,y,to,t,low[N],ans[N],dfn[N],last[200001],num[N];
struct node
{int go,last;
}p[200001];
void make(int x,int y){p[++t].go=y;p[t].last=last[x];last[x]=t;}
void tarjan(int x)
{num[x]=1; dfn[x]=low[x]=++to;int tot=0;for (int i=last[x];i;i=p[i].last){int y=p[i].go;if (!dfn[y]){tarjan(y);low[x]=min(low[x],low[y]);if (dfn[x]<=low[y]){ans[x]+=num[y]*(n-1-num[y]);tot+=num[y];}num[x]+=num[y];}else low[x]=min(low[x],dfn[y]);}ans[x]+=tot*(n-1-tot);
}
int main()
{freopen("a.in","r",stdin);scanf("%d%d",&n,&m);for (i=1;i<=m;i++){scanf("%d%d",&x,&y);make(x,y); make(y,x);}to=0;tarjan(1);for (i=1;i<=n;i++) printf("%d\n",ans[i]/2+n-1);
}

转载于:https://www.cnblogs.com/Sport-river/p/10390125.html

3896. 【NOIP2014模拟10.26】战争游戏相关推荐

  1. JZOJ 3896. 【NOIP2014模拟10.26】战争游戏

    Are you ready? 题目: 题意: 分析: 代码: 题目: 传送门 题意: 给出一个图,问我们删掉每一个节点可影响的方案的个数 分析: 缩点+割点裸题 对于经过每个割点的路径,我们分两种情况 ...

  2. 3896. 【NOIP2014模拟10.26】战争游戏 (Standard IO)

    Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits Description Input Output Sample Inpu ...

  3. 【NOIP2014模拟10.26】战争游戏

    这题就是求割点并计算答案. 上标: #include<cstdio> #include<algorithm> #define N 50010 using namespace s ...

  4. jzoj3058. 【NOIP2012模拟10.26】火炬手

    jzoj3058. [NOIP2012模拟10.26]火炬手 题目 Description Input Output Sample Input Sample Output Hint 分析 做法一 做法 ...

  5. JZOJ 5930. 【NOIP2018模拟10.26】山花

    Description 3.1 Background 春日的山中灌木茂盛,几乎长到了人的腰间,将山间都铺满了绿色.雨后的灌木之间还带着晨露,总会沾湿走过的行人的衣裳. 林中枝叶茂密,不过树木长的并不紧 ...

  6. JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码

    Description 在OI界存在着一位传奇选手--QQ,他总是以风格迥异的搞笑代码受世人围观 某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据 while 序列长度< n do { ...

  7. JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护

    Description 最近徆多人投诉说C国的道路破损程度太大,以至亍无法通行 C国的政府徆重视这件事,但是最近财政有点紧,丌可能将所有的道路都进行维护,所以他们决定按照下述方案进行维护 将C国抽象成 ...

  8. JZOJ 3057. 【NOIP2012模拟10.26】电影票

    .. 分析: 代码: 分析: 我们通过找规律,可以得知答案为: 但我们直接通过高精度计算的话铁定TTT飞 所以我们将式子带入其中,就会发现分母和分子是可以约分的!并且分母可以被约掉 所以我们可以创建两 ...

  9. 【NOIP2012模拟10.26】火炬手

    Description 全运会就要开始了,笨笨想成为湖南地区的火炬手,经过层层选拔,最终到了最后一关,这一关给出了一个正整数n(N<=100000),求一个最小的正整数m,使得n*m的十进制表示 ...

最新文章

  1. smobiler介绍(二)
  2. 去重之后统计条数_BOPET:12的普通包装膜到底去哪了?
  3. VC++中操作XML(MFC、SDK)
  4. MySQL — 优化之explain执行计划详解(转)
  5. pmd代码安全扫描工具
  6. 电话光端机应用范围解析!电话光端机主要应用在哪些领域?
  7. mysql 清空表的两种方法
  8. “操作系统不以 C 开头和结尾,C 不等于整个世界”
  9. sqlserver使用depart获取当前日期月份及通过拼接得到日期时间
  10. VB根据窗体自动调整窗体内控件大小 注:实用,可以直接引用
  11. jieba分词怎么操作_常用分词工具使用教程
  12. Java基础教程【第八章:访问修饰符】
  13. 前景检测算法(十五)--LOBSTER算法
  14. HTML5 - 搭建移动Web应用
  15. CISCO 模拟器 Dynamips 使用说明
  16. 联想拯救者Y9000P安装ubuntu22.04和安装anaconda教程
  17. 新视智科“5G+工业互联网”产品线南山研发中心揭牌成立,助力制造业转型创新发展
  18. uoj 246. 【UER #7】套路
  19. Exec format error问题的原因
  20. 怎样提高英语思维能力?

热门文章

  1. 教大家获取百度云盘真实下载链接(告别云盘客户端,全速下载)
  2. Qt android 打印调试
  3. 世界第一位计算机程序员传奇一生
  4. macOS Big Sur替换图标合集(新增至2719枚大苏尔风格图标)
  5. linux—wget安装redis
  6. 【信息系统项目管理师】第四章 整体管理思维导图
  7. linux下运行omnet,Linux下OMNet++安装步骤[原创]
  8. 【图文教程】用“iz3d”软件将您的游戏打造为红蓝3D游戏。
  9. 如何仅使用SaaS开发软件
  10. 美工效果图大小 html,六、DIV CSS实战之布局美工图分析与切图