HLG 2025
| 确定大小 | ||||||
|
||||||
| Description | ||||||
| 现在有N个字母,(N <= 26),我们称之为A、B、C、D......。这次他们之间想确定大小关系。 但是现在只有一些残缺不全的关系,比如A > Z,然后没了...... 现在给出N个字母,(前N个大写字母),然后给出M个关系,每个关系只有大于和小于两种。 最后判断那些是可以确定他应有的大小位置的。 (没有给出的关系,均属于不可确定) |
||||||
| Input | ||||||
| 多组测试数据:每组测试数据: 第一行两个整数N,M。 接下来M行,每行一个关系,形式如:A>B A<B (M < 30) |
||||||
| Output | ||||||
| 按照ABCD...的顺序,输出可以确定的势力和他的排名。 如果都不可以确定,则输出-1。 |
||||||
| Sample Input | ||||||
| 3 2 A>B B>C 3 3 A>B B>C C>A |
||||||
| Sample Output | ||||||
| A 1 B 2 C 3 -1 |
||||||
| Source |
本题要求输出可以确定的人的排名2,首先需要建两个图,正向建一个反向建一个。
由于是有向图,对两个图中的每一个点进行bfs,记录以他为起始点所能扩展的点的数量
我的程序中用head和tail数组进行存储的。对于每个点,如何head值和tail值加起来的和为n-1
那么这个点的名次就是可以确定的了,
他的名次其实就是tail的值+1
还有一个问题就是结构体edge大小的问题
,我刚开始开的maxn,结果wa了,他的大小应该为2*maxn
#include<stdio.h>
#include<iostream>
#include<queue>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=;
int head[maxn],tail[maxn];
int vis[maxn];
struct Edge{
int to;
int next;
}edge1[maxn*],edge2[maxn*];
int head1[maxn];
int head2[maxn];
int tot1,tot2;
int n,q;
void addedge(int u,int v){
edge1[tot1].to=v;
edge1[tot1].next=head1[u];
head1[u]=tot1++;
edge2[tot2].to=u;
edge2[tot2].next=head2[v];
head2[v]=tot2++;
}
int head_num,tail_num;
void head_bfs(int u){
for(int i=;i<=n;i++)
vis[i]=;
vis[u]=;
queue<int>q;
q.push(u);
int v;
while(!q.empty()){
v=q.front();
q.pop();
for(int i=head1[v];i!=-;i=edge1[i].next){
if(!vis[edge1[i].to]){
vis[edge1[i].to]=;
q.push(edge1[i].to);
head_num++;
}
}
}
}
void tail_bfs(int u){
for(int i=;i<=n;i++)
vis[i]=;
vis[u]=;
queue<int>q;
q.push(u);
int v;
while(!q.empty()){
v=q.front();
q.pop();
for(int i=head2[v];i!=-;i=edge2[i].next){
if(!vis[edge2[i].to]){
vis[edge2[i].to]=;
q.push(edge2[i].to);
tail_num++;
}
}
}
}
void init(){
tot1=;
tot2=;
memset(head1,-,sizeof(head1));
memset(head2,-,sizeof(head2));
}
int main(){ while(scanf("%d%d",&n,&q)!=EOF){
init();
char u,v,temp;
getchar();
int u1,v1;
for(int i=;i<=q;i++){
scanf("%c%c%c",&u,&temp,&v);
getchar();
u1=u-'A'+;
v1=v-'A'+;
if(temp=='>')
addedge(u1,v1);
else
addedge(v1,u1);
}
int cnt;
for(int i=;i<=n;i++){
head_num=;
head_bfs(i);
head[i]=head_num;
tail_num=;
tail_bfs(i);
tail[i]=tail_num;
}
bool flag=false;
char c='A';
for(int i=;i<=n;i++){
if(head[i]+tail[i]==n-){
printf("%c %d\n",c+i-,tail[i]+);
flag=true;
}
}
if(!flag)
printf("-1\n");
}
return ;
}
HLG 2025的更多相关文章
- 轮值CEO胡厚崑:到2025年所有的企业都将用到云(云的2.0时代,会有几千朵云几万朵云升起来,这将产生不同的技术模式、商业模式、思维模式)
2016年09月04日 07:38 中国经营报 李凡 在全国工商联“2016年中国民营企业500强”排行榜上夺得头把交椅的华为,向外界描绘了面向未来进一步做大做强的路径. 华为创始人任正非于201 ...
- URAL 2025. Line Fighting (math)
2025. Line Fighting Time limit: 1.0 second Memory limit: 64 MB Boxing, karate, sambo- The audience i ...
- 2025战略,中秋送福利!免费开源ERP Odoo Windows 一键傻瓜式安装版发布
概述 为了帮助更多的小白,能够快速的体验Odoo的强大功能,针对国内大多数小白用户无法快速直接体验Odoo的尴尬,开源智造呕心沥血,历经数百次的测试和整合终于赶在中秋节这天将Odoo所需要的复杂运行环 ...
- loj #2025. 「JLOI / SHOI2016」方
#2025. 「JLOI / SHOI2016」方 题目描述 上帝说,不要圆,要方,于是便有了这道题. 由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形.上帝把我们派到了一个有 NNN ...
- "中国制造2025"+"互联网+",引领制造业发展
"中国制造2025"+"互联网+",引领制造业发展
- 2025年VR虚拟现实技术将渗透人们日常生活
2025年VR虚拟现实技术将给人们带来什么好处?今年早些时候,虚拟现实VR游戏制造商Survios在广州一个非常大的购物中心内的一个小型灰色墙壁店面,通过AMC中心植入了其位置游戏市场上的第一面旗帜. ...
- 2022Gartner容器预测:2025年85%的企业将使用容器管理服务
近日,国际知名权威分析机构Gartner发布了最新<全球容器管理预测>.预测中指出:在加速的数字化转型驱动下,到2025年全球容器管理领域市场规模将突破14亿美元,预计年复合增长率将达到2 ...
- poj 1806 Manhattan 2025
点击打开链接 题目大意就是给定一个最大歩数,让你输出你在三维的空间中可以到达的位置的切片,注意当歩数大于9的时候就不需要输出了! #include<stdio.h> #include< ...
- hlg 2130 状压dp
基本的状压dp 需要注意的是两点之间直线最短 所以不需要进行floyd 由于把dp的memset放在了初始化0的后面de了好久的bug.. #include<stdio.h> #inclu ...
随机推荐
- git命令收集
$ git clone ... $ git status 查看状态 $ git commit -am "XXX" 提交信息 $ git commit -am "XXXX& ...
- 4G牌照影响
与3G牌照发放整整讨论了10年不同,4G牌照发放在2009年3G规模建设4年后就进行了发放,也颇匹配于行业的加速度.那么,4G到底会在哪些方面.在何种程度上改变中国呢?其实,4G的影响可能没有那么大, ...
- Android 两个ArrayList找出相同元素及单个ArrayList删除元素
//从一个ArrayList中删除重复元素 List<String> arrayList1 = new ArrayList<String>(); arrayList1.add( ...
- MySQL的information_schema的介绍(转)
转自:http://www.cnblogs.com/hzhida/archive/2012/08/08/2628826.html, 大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一 ...
- LR常用函数汇总
lr_start_transaction为性能分析标记事务的开始 lr_end_transaction为性能分析标记事务的结束 lr_rendezvous在 Vuser 脚本中设置集合点 lr_thi ...
- python super详解
一.super() 的入门使用 - 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能, 这时,我们就需要调用父类的方法了,可通过使用 super 来实 ...
- SQL,数据库连接
- afnetworking NSCocoaErrorDomain Code=3840 解决
afnetworking json解析出错 解决方法1 AFURLResponseSerialization.m 258行修改 responseString = [responseString str ...
- config文件声明非系统节点的方法
有一些自定义节点如果不声明会报出无法识别的节点 XXX 这时候要声明该节点 写法如下 <configSections> <!--声明一个节点组--> <sectionGr ...
- CPP-基础:String类
已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String ...

