1888. Pilot Work Experience(dfs+bfs)
dfs找出连通块 块内构造数据 bfs找出最值
如果有多个连通块 那max就为49 可以起点不同 这样记得修改后面的数据
写的老长了。。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<queue>
using namespace std;
vector<int>ed[];
int vis[],gg,p,g,maxz,o[],pp[][],q[];
int w[],mm[];
void dfs(int u)
{
gg++;
pp[g][gg] = u;
int i;
for(i = ; i < (int)ed[u].size() ; i++)
{
int k = ed[u][i];
if(!o[k])
{
o[k] = ;
dfs(k);
}
}
}
int bfs(int u,int k)
{
int i,tt=;
for(i = ; i <= q[k] ; i++)
{
vis[pp[k][i]] = ;
}
queue<int>qq;
qq.push(u);
vis[u] = ;
while(!qq.empty())
{
int k = qq.front();
tt = max(vis[k],tt);
qq.pop();
for(i = ; i < (int)ed[k].size() ; i++)
{
int v = ed[k][i];
if(vis[v]>)
return -;
if(vis[v]&&abs(vis[v]-vis[k])!=)
{
return -;
}
if(!vis[v])
{
vis[v] = vis[k]+;
qq.push(v);
}
}
}
if(maxz<tt)
{
maxz = tt;
mm[k] = maxz;
for(i = ; i <= q[k] ; i++)
{
w[pp[k][i]] = vis[pp[k][i]];
}
}
return ;
}
int main()
{
int n,i,j;
scanf("%d%d",&n,&p);
for(i = ; i <= n ; i++)
{
int u,v;
scanf("%d%d",&u,&v);
ed[u].push_back(v);
ed[v].push_back(u);
}
g = ;
for(i = ; i <= p ; i++)
{
if(!o[i])
{
o[i] =;
dfs(i);
q[g] = gg;
gg=;g++;
}
}
int nu=;
for(i = ; i < g ; i++)
{
int kk=;
maxz=;
for(j = ; j <= q[i] ; j++)
{
if(bfs(pp[i][j],i)>)
{
kk=;
}
}
if(!kk)
{
maxz=;
break;
}
}
if(maxz==)
printf("-1\n");
else
{
if(g>)
{
printf("49\n");
for(i = ; i <= q[] ; i++)
w[pp[][i]]+=(-mm[]);
}
else
{
printf("%d\n",maxz-);
}
for(i = ; i <= p ; i++)
printf("%d ",w[i]);
puts("");
}
return ;
}
1888. Pilot Work Experience(dfs+bfs)的更多相关文章
- DFS/BFS+思维 HDOJ 5325 Crazy Bobo
题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...
- ID(dfs+bfs)-hdu-4127-Flood-it!
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相 ...
- [LeetCode] 130. Surrounded Regions_Medium tag: DFS/BFS
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- HDU 4771 (DFS+BFS)
Problem Description Harry Potter has some precious. For example, his invisible robe, his wand and hi ...
- DFS/BFS视频讲解
视频链接:https://www.bilibili.com/video/av12019553?share_medium=android&share_source=qq&bbid=XZ7 ...
- POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE
POJ 3083 -- Children of the Candy Corn(DFS+BFS) 题意: 给定一个迷宫,S是起点,E是终点,#是墙不可走,.可以走 1)先输出左转优先时,从S到E的步数 ...
- [LeetCode]695. 岛屿的最大面积(DFS/BFS)、200. 岛屿数量(DFS/BFS待做/并差集待做)
695. 岛屿的最大面积 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被 ...
- POJ2308连连看dfs+bfs+优化
DFS+BFS+MAP+剪枝 题意: 就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路: 首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...
随机推荐
- Luence简单实现2
上一篇是基于内存存储的,这次的例子是基于本地存储索引库. 上一次的代码稍微修改,代码如下: //创建词法分析器 Analyzer analyzer = new StandardAnalyzer(); ...
- mysql innodb 引擎
innodb 引擎 一.概述 InnoDB 是一个用的比较广泛的存储引擎,因为它支持事物和外键,还有不错的效率;我们先看看官方教程怎么说; 我们先读一下, 对于上面的文档, 对一个InnoDB的表首先 ...
- POJ 3614 Sunscreen 贪心
题目链接: http://poj.org/problem?id=3614 Sunscreen Time Limit: 1000MSMemory Limit: 65536K 问题描述 to avoid ...
- 网站常用css必备css reset
在我们写前端代码页面的时候,很多常用的CSS类都是固定的!但没有一个标准或者大家都按自己的方式去随意的写,这样就每次都重复写一些固定的类! 为此HTML5 Doctor(HTML5医生)为我们总结了一 ...
- C# mongodb [上]
概述 MongoDB是一个高性能,开源,无模式的文档型数据库,使用C++开发.是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是 ...
- 【单调栈】Bzoj 1012: 最大数maxnumber
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 6255 Solved: 2676[Submi ...
- 【BZOJ】【2132】圈地计划
网络流/最小割 Orz Hzwer 这类大概是最小割建模中的经典应用吧…… 黑白染色,然后反转黑色的技巧感觉很巧妙!这个转化太神奇了…… /****************************** ...
- GhostDoc:生成.NET API文档的工具 (帮忙文档)
在 Sandcastle:生成.NET API文档的工具 (帮忙文档) 后提供另一个生成API文档的工具. 1) 准备工作 安装GhostDoc Proc. 收费的哦.... 这个工具的优势是不像 ...
- [设计模式] 19 观察者模式 Observer Pattern
在GOF的<设计模式:可复用面向对象软件的基础>一书中对观察者模式是这样说的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新.当一个 ...
- uva 10626
dp 记忆化搜索 3个1元和1个10元的情况不能少 #include <cstdio> #include <cstdlib> #include <cmath> #i ...