(15)

也是 DIV1 500

题意是给定 一个无向图 删去一条边以后 可不可以是完全二叉树。

细节点很多,开始做法居然求到桥去了,最近强联通写傻了。

最多1024-1个点 1024-1条边枚举

所以:

先枚举要删去的边,然后进行判断。

判断是否是一颗完全二叉树的话 要一个标记deep深度 max deep==h

然后还要看是否整个图强联通

还有一点 点的度 为1 ,2 ,3 其中度为2的只有一个 ,度为1的有2^(h-2)个

code:

 #include<iostream>
#include <string>
#include <vector>
#include<cmath>
#include<map>
#include<algorithm>
#include<string.h>
using namespace std;
#define N 123456 int head[N],dfn[N],low[N];
int vis[N];
int du[N];
struct edge
{
int v,next;
}e[N*];
int cnt; int ans; void add(int u,int v)
{
e[cnt].v=v;
e[cnt].next=head[u];
head[u]=cnt++;
} void dfs(int u,int t)
{
vis[u]=;
t++;
ans=max(ans,t);
for (int i=head[u];i!=-;i=e[i].next)
{
int v=e[i].v;
if (!vis[v])
{
dfs(v,t);
}
}
} void init()
{
cnt=;
memset(head,-,sizeof(head));
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
memset(vis,,sizeof(vis));
memset(du,,sizeof(du));
ans=;
} class TheKingsRoadsDiv2 {
public:
string getAnswer(int h, vector <int> a, vector <int> b) {
int k=;
for (int i=;i<=h;i++) k*=;
k--; for (int p=;p<a.size();p++)
{
init();
for (int j=;j<a.size();j++)
if (j!=p)
{
add(a[j],b[j]),add(b[j],a[j]);
du[a[j]]++;
du[b[j]]++;
} int u=;
int num=;
int flag=;
for (int i=;i<=k;i++) {
if (du[i]==) u=i;
else if (du[i]==) num++;
else if (!(du[i]==||du[i]==||du[i]==)) flag=;
} if (!u||num!=(k+)/) continue;
dfs(u,);
for (int i=;i<=k;i++)
if (!vis[i]) flag=;
if (flag||ans!=h) continue;
return "Correct";
}
return "Incorrect";
}
}; // Powered by FileEdit
// Powered by TZTester 1.01 [25-Feb-2003]
// Powered by CodeProcessor

topcoder 650 srm div2 1000pts的更多相关文章

  1. topcoder 650 srm

    500 遇到这种构造题 就给跪了 比赛的时候想很多方法 DP,贪心,模拟 发现越写越烦琐.看到别人出这么快,肯定又是奇葩思路. 后来居然想到 2^50的暴力 +剪枝 不过暴力肯定卡你 IDEA: 只要 ...

  2. TopCoder 603 div1 & div2

    div2 250pts MiddleCode 题意:s串长度为奇数时,将中间字符取掉并添加到t末尾:长度为偶数时,将中间两个较小的字符取掉并添加到末尾. 分析:直接做,学习了一下substr(s, p ...

  3. TopCoder 649 div1 & div2

    最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实 ...

  4. 【TopCoder】SRM151 DIV2 练习总结

    第一次做完整的SRM题,刷完感觉萌萌哒,不过自己对java中很多细节不熟练,还要边做题边google. 250分的题:判断字符串序列是否是前缀码,如果不是,返回第一个违反前缀码规则的字符串. 简单的暴 ...

  5. 【TopCoder】SRM 680 DIV 2

    1. BearPair之bigDistance1.1 题目概述在 <= 50的字符串中找位置i,j 满足(1) s[i] != s[j];(2) abs(i-j)尽可能大.若不存在返回-1, 否 ...

  6. 【TopCoder】SRM159 DIV2总结

    250分题:给出一些规则,问街道上哪些地方可以停车. 简单的模拟题,考察每条规则是否成立即可. 代码:StreetParking 500分题:实现集合的交,并和差运算. 交运算:一个数组放到集合中,遍 ...

  7. 【Topcoder】SRM158 DIV2总结

    250分题:给定一个4位字符串initial和rotate这个字符串的方式,然后再给另一个字符串current,问current能否由initial通过rotate得到,需要几次rotate? 简单的 ...

  8. 【Topcoder】SRM157 DIV2总结

    250分题:简单的二分,就是平常玩的猜数字游戏 代码:GitHub 500分题:给出一个员工一天的打卡时间段,要求求出员工这一天的工资.其中正常上班时间是6:00:00到18:00:00,薪水是wag ...

  9. 【TopCoder】SRM152 DIV2总结

    为什么平常刷的时候感觉还不错,比赛的时候只能做出来一道题=.= 250分题:大水题,根据题目规则把一个字符串翻译成数字,直接代码:GitHub 我是通过遍历一个个数出来的,看到大神的解法是把字符用‘- ...

随机推荐

  1. 在项目中运用精益 - Five Why

    今天成功地运用了5个why对一个项目上的问题进行剖析,收获良多,在此分享给大家. 事情是这样的,该项目是个固定价格项目,处于收尾阶段,客户提出来了一些需求,我们(实施方)认为这些要求是不在最初项目范围 ...

  2. light oj 1336 sigma function

    常用的化简方法(高中就常用了):     p^(e+1)-1/p-1=             [ p^(e+1) -p + (p-1) ]/ (p-1) = p*(p^e-1)/(p-1) + 1  ...

  3. core mvc 分页

    看了下XPAGE感觉还是用的不太爽,自己写了个,样式是bootstrap的,需要的小伙伴拿走吧. public static IHtmlContent Pager(this IHtmlHelper h ...

  4. JDK 5 ~ 11 新特性倾情整理

    为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~11的所有关键新特性! 先看一下JDK的版本迭代图: 注:   OpenJDK和JDK区别  GPL协议通用性公开许可证(General ...

  5. myBatis的binding错误:Invalid bound statement (not found)

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误这个问题我找了好久,终于找到了正确的写 ...

  6. eclipse下svn的分支与合并指南 - 更新版

    http://wenku.baidu.com/link?url=ul5vzBHZpHgzENp46RQwTYrkCUYLeVg9TuhmPM_qisR1BGzp6Qca7onhS-SOzwDYuYdA ...

  7. Angular缺少 FormsModule

    虽然 ngModel是一个有效的 Angular 指令,不过它在默认情况下是不可用的. 解决方法: 在根模块引入FormModule import { FormsModule } from '@ang ...

  8. canvas之刮刮乐

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. luogu P1618 三连击(升级版)

    题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”. //感谢黄小U饮品完善题意 输入输出格 ...

  10. luogu P1364 医院设置

    题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1.如上 ...