hdu 4705 Y(多校赛第十场)

来源:互联网 发布:政治大纲解析 知乎 编辑:程序博客网 时间:2024/06/10 01:48

题目链接:点击打开链接

题目大意:在一树上的点集合『a,b,c』,使得没有simple path

分析:正向分析貌似很多种情况啊,所以想反面。

            小菜鸟一枚啊,所以第一次T了啊TT。

          这种DFS太暴力了,怎么会不T??附上代码,以示警告。

偷笑


参考了下大神的代码,点击打开链接

仍用DFS,这次将3点看为一条线上的枚举中间这个点,但是两边的点完全有可能重复选择对方,所以最后/2。

刚才忘记打开栈开关了= =WA了

学习了打开栈开关

#pragma comment(linker, "/STACK:16777216")#include<cstdio>#include<cstdlib>#include<vector>#include<iostream>#include<cstring>using namespace std;vector<int>node[100005];bool visit[100005];__int64 sum;int n;int dfs(int k){    int i,j,tmp,count=0;    visit[k]=true;    for(i=0;i<node[k].size();i++)    {        j=node[k][i];       if(!visit[j])       {          tmp=dfs(j);          count+=tmp;          sum+=(__int64 )tmp*(n-1-tmp);       }    }    if(count)       sum+=(__int64)count*(n-1-count);    count++;    return count;}int main(){    int i,u,v,temp;    __int64 ans;    while(~scanf("%d",&n))    {        for(i=0;i<=n;i++)          node[i].clear();          memset(visit,false,sizeof(visit));          sum=0;        for(i=0;i<n-1;i++)        {           scanf("%d %d",&u,&v);           node[u].push_back(v);           node[v].push_back(u);        }        dfs(1);        ans=(__int64)n*(n-1)*(n-2)/6;//之前没有加(__int64)使得WA了= =        printf("%I64d\n",ans-(sum)/2);    }    return 0;}





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇脸上长斑了怎么办 七个月宝宝大便干怎么办 两月大婴儿不拉大便怎么办 周岁宝宝大便出血了怎么办 十一个月宝宝大便干燥怎么办 8个月宝宝大便干燥怎么办 7个月宝宝大便干燥怎么办 11个月宝宝大便干燥怎么办 9个月宝宝大便干燥怎么办 10个月宝宝大便干燥怎么办 宝宝两天没拉粑粑了怎么办 小学闺蜜嫉妒我怎么办 三年级孩子对应用题理解很差怎么办 我嫉妒我的朋友怎么办 嫉妒同学比我好怎么办 宝宝生在家里了怎么办 在家不小心生了怎么办 葫芦干了有黑点怎么办 单位费用发票丢失了怎么办 1岁宝宝太调皮了怎么办 孩子和同学打架家长该怎么办 孩子被大人打了怎么办 小孩不跟大人沟通怎么办 2岁小朋友爱动手怎么办 小班爱动手的小朋友怎么办 宝宝对小朋友不友好爱动手怎么办 小孩子上幼儿园爱打人怎么办 小孩被别人打了怎么办 1岁幼儿爱打人怎么办 作为幼小朋友打人老师怎么办 2岁半小朋友喜欢打人怎么办 2岁宝宝脾气大怎么办 4月小孩爱动怎么办 一岁宝宝老打人怎么办 1岁宝宝爱打人怎么办 3岁宝宝喜欢抓人怎么办 宝宝喜欢打人怎么办2岁 1岁宝宝动手打人怎么办 孩子总打人总哭怎么办 小孩出现夜惊家人怎么办 小孩不原跟家人沟通怎么办