CodeForces 131D【图特性+BFS】
来源:互联网 发布:屏蔽淘宝网 百度 编辑:程序博客网 时间:2024/06/01 14:15
题意:
只有一个环,然后环都是0(环缩点相当于树的根),然后其余的输出到根的距离
思路:
可以从度为1的 开始搜 把那些分支全标记掉,然后再取没有标记掉的,BFS一下搞出距离。
具体这个标记:
倒着搜这样肯定没有多对一,标记掉度等于2的那些点就好了,度>2的要减减,而且环里的点的度不可能搜到度 = 2 因为环=点的度为2,他又连出一条边 度=3。
后话:
这种n个点 n条边/n-1条边的题都是套路了,要仔细考虑图特性:点的度(出度,入度),怎么搜(顺着搜,倒着搜,BFS好写还是DFS好写)
但是一旦确定思路,要多举反例,谨防入坑!!
只有一个环,然后环都是0(环缩点相当于树的根),然后其余的输出到根的距离
思路:
可以从度为1的 开始搜 把那些分支全标记掉,然后再取没有标记掉的,BFS一下搞出距离。
具体这个标记:
倒着搜这样肯定没有多对一,标记掉度等于2的那些点就好了,度>2的要减减,而且环里的点的度不可能搜到度 = 2 因为环=点的度为2,他又连出一条边 度=3。
后话:
这种n个点 n条边/n-1条边的题都是套路了,要仔细考虑图特性:点的度(出度,入度),怎么搜(顺着搜,倒着搜,BFS好写还是DFS好写)
但是一旦确定思路,要多举反例,谨防入坑!!
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=3e3+10; struct asd{ int to; int next; }; asd e[N*2]; int head[N],tol; int n,m;int pre[N];bool vis[N],used[N];void add(int u,int v){ e[tol].to=v; e[tol].next=head[u]; head[u]=tol++;}void solve1(){queue<int>q;for(int i=1;i<=n;i++){if(pre[i]==1) {q.push(i);vis[i]=true;}}while(!q.empty()){int u=q.front();q.pop();for(int i=head[u];~i;i=e[i].next){int v=e[i].to;if(vis[v]) continue;if(pre[v]==2){vis[v]=true;q.push(v);}pre[v]--;}}}int ans[N];void solve2(){queue<int>q;for(int i=1;i<=n;i++)if(!vis[i]){ans[i]=0;used[i]=true;q.push(i);}while(!q.empty()){int u=q.front();q.pop();for(int i=head[u];~i;i=e[i].next){int v=e[i].to;if(used[v]) continue;ans[v]=ans[u]+1;used[v]=true;q.push(v);}}}int main(){int u,v;scanf("%d",&n);tol=0;memset(head,-1,sizeof(head));for(int i=0;i<n;i++){scanf("%d%d",&u,&v);add(u,v);add(v,u);pre[u]++;pre[v]++;}solve1();solve2();for(int i=1;i<=n;i++)printf("%d ",ans[i]);return 0;}/*61 23 46 42 31 33 561 22 33 11 44 54 6*/
0 0
- CodeForces 131D【图特性+BFS】
- CodeForces 586D【BFS】
- Codeforces 796D bfs
- codeforces 676D (bfs 模拟)
- (BFS)codeforces #Round354-div2-D
- Codeforces 463D Gargari and Permutations(BFS)
- Codeforces 467D Fedor and Essay bfs
- Codeforces 467D Fedor and Essay(bfs)
- Codeforces--192.div2.D Biridian Forest bfs
- codeforces 553D Nudist Beach 二分+bfs
- codeforces 354D. Theseus and labyrinth bfs
- Codeforces #354D (Div. 2) 暴力BFS
- Codeforces Round #325 (Div. 2) D bfs
- Codeforces 225D Snake(状压BFS)
- Codeforces Round #375 (Div. 2) D bfs
- Codeforces 66D World tour BFS+枚举
- Codeforces 796D Police Stations 构造+BFS
- Codeforces 327D Block Tower【思维+Bfs】
- SpringBoot之——spring boot + redis 实现session共享随笔
- Infoblox Grid Manager简介
- Unreal 入门-Unreal 基础知识。
- 过山车 【裸 匈牙利算法】
- 最常用的15大Eclipse开发快捷键技巧
- CodeForces 131D【图特性+BFS】
- QT--XML(未完)
- Unreal 入门-VR 游戏中需要注意的事情
- tiny-yolo 训练自己的数据集
- linux打开telnet端口
- UVA10817:Headmaster's Headache(状压dp)
- 什么是AOP?AOP面向切面编程
- java 四舍五入保留小数
- 简单实现上拉加载的RecyclerView