【杂谈】[scoi2005]王室联邦
来源:互联网 发布:网络通信基础知识视频 编辑:程序博客网 时间:2024/04/29 01:46
这题完全没感觉。。。不知道什么情况。。。
照着http://blog.163.com/englanq@126/blog/static/64653471201191645020700/ 这位神牛的写法写了一份。。但是加进自己的一些理解就wa了。。。。
交了无数次。。。
很多细节都没搞懂。。。
还有http://hi.baidu.com/kqzxcmh/item/4dfe1be0d37773bb2e140b05 这位神牛的写法只dfs了一次。。很想知道他是怎么做到的
代码中注释掉的地方都是加上就错了但是不明白为什么错了的,求大神指导!!:
#include<cstdlib> #include<cstring> #include<cmath> #include<cstdio> #include<algorithm> #include<iostream> using namespace std; int n,b; int head[1500+10],l=0; int flag[1500+10]; int size[1500+10]; bool capital[1500+10]; int now; struct E { int v,next; }e[5000+10]; void add(int u,int v) { e[l].v=v; e[l].next=head[u]; head[u]=l++; } void end() { printf("0\n"); exit(0); } struct Te { int mark,pos; bool operator <(const Te &b)const { return mark<b.mark; } }temp[1000+10]; void dfs2(int u,int color,int fa) { flag[u]=color; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].v; if(v==fa||flag[v])continue; dfs2(v,color,u); } } void dfs(int u,int fa) { size[u]=1; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].v; if(v==fa||size[v])continue; dfs(v,u); size[u]+=size[v]; } if(size[u]<=3*b&&size[u]>=b) { ++now; size[u]=0; dfs2(u,now,fa); capital[u]=true; } } void print() { printf("%d\n",now); printf("%d",flag[1]); for(int i=2;i<=n;i++)printf(" %d",flag[i]); printf("\n"); int tail=1; for(int i=1;i<=n;i++) { if(capital[i]) { temp[tail].mark=flag[i]; temp[tail].pos=i; tail++; } } sort(temp+1,temp+now+1); printf("%d",temp[1].pos); for(int i=2;i<=now;i++)printf(" %d",temp[i].pos); printf("\n"); exit(0); } int main() { memset(head,-1,sizeof(head)); scanf("%d%d",&n,&b); for(int i=1;i<n;i++) { int u,v; scanf("%d%d",&u,&v); add(u,v); add(v,u); } if(b>n)end(); if(n<3*b) { now=1; capital[1]=true; dfs2(0,1,0); print(); } for(int i=1;i<=n;i++) { memset(flag,0,sizeof(flag)); memset(size,0,sizeof(size)); memset(capital,0,sizeof(capital)); now=0; dfs(i,0); int q=0; for(int j=1;j<=n;j++)if(flag[j])q++; if(q==n)//||size[i]<=b) { //dfs2(i,now,0); print(); } } printf("0\n"); return 0; }
0 0
- 【杂谈】[scoi2005]王室联邦
- [SCOI2005]王室联邦
- 1086: [SCOI2005]王室联邦
- 1086: [SCOI2005]王室联邦
- [SCOI2005]王室联邦
- BZOJ2005 [SCOI2005]王室联邦
- bzoj1086[SCOI2005]王室联邦
- 【bzoj1086】[SCOI2005]王室联邦
- [BZOJ1086][SCOI2005]王室联邦
- [SCOI2005]王室联邦
- [SCOI2005]王室联邦
- [SCOI2005]王室联邦
- [SCOI2005]王室联邦
- [BZOJ1086][SCOI2005]王室联邦
- bzoj1086: [SCOI2005]王室联邦
- [BZOJ1086][SCOI2005]王室联邦
- [SCOI2005]王室联邦
- 【SCOI2005】bzoj1086 王室联邦
- HM代码使用
- Java数组在内存中是什么样的?
- 大小写互换
- 解析ASP.NET WebForm和Mvc开发的区别
- extern "C"实现C与C++混合编程(笔记)
- 【杂谈】[scoi2005]王室联邦
- 跟着苍蝇找厕所,跟着蜜蜂找花朵,跟着富翁挣百万,跟着乞丐会要饭!
- 联盟广告对中小站长来说就是个坑
- 创业三个月总结---记录这三个月的酸甜苦辣咸!!!
- Json格式数据使用流程图
- JVM源码分析-Java运行
- image-set在retina屏幕下图片自适应
- Axis接收远程调用c# webservice返回的数组
- 【开发问题记录,持续更新..】