确定大小
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 50(15 users) Total Accepted: 12(11 users) Rating: Special Judge: No
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的更多相关文章

  1. 轮值CEO胡厚崑:到2025年所有的企业都将用到云(云的2.0时代,会有几千朵云几万朵云升起来,这将产生不同的技术模式、商业模式、思维模式)

    2016年09月04日 07:38 中国经营报   李凡 在全国工商联“2016年中国民营企业500强”排行榜上夺得头把交椅的华为,向外界描绘了面向未来进一步做大做强的路径. 华为创始人任正非于201 ...

  2. URAL 2025. Line Fighting (math)

    2025. Line Fighting Time limit: 1.0 second Memory limit: 64 MB Boxing, karate, sambo- The audience i ...

  3. 2025战略,中秋送福利!免费开源ERP Odoo Windows 一键傻瓜式安装版发布

    概述 为了帮助更多的小白,能够快速的体验Odoo的强大功能,针对国内大多数小白用户无法快速直接体验Odoo的尴尬,开源智造呕心沥血,历经数百次的测试和整合终于赶在中秋节这天将Odoo所需要的复杂运行环 ...

  4. loj #2025. 「JLOI / SHOI2016」方

    #2025. 「JLOI / SHOI2016」方   题目描述 上帝说,不要圆,要方,于是便有了这道题. 由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形.上帝把我们派到了一个有 NNN ...

  5. "中国制造2025"+"互联网+",引领制造业发展

    "中国制造2025"+"互联网+",引领制造业发展

  6. 2025年VR虚拟现实技术将渗透人们日常生活

    2025年VR虚拟现实技术将给人们带来什么好处?今年早些时候,虚拟现实VR游戏制造商Survios在广州一个非常大的购物中心内的一个小型灰色墙壁店面,通过AMC中心植入了其位置游戏市场上的第一面旗帜. ...

  7. 2022Gartner容器预测:2025年85%的企业将使用容器管理服务

    近日,国际知名权威分析机构Gartner发布了最新<全球容器管理预测>.预测中指出:在加速的数字化转型驱动下,到2025年全球容器管理领域市场规模将突破14亿美元,预计年复合增长率将达到2 ...

  8. poj 1806 Manhattan 2025

    点击打开链接 题目大意就是给定一个最大歩数,让你输出你在三维的空间中可以到达的位置的切片,注意当歩数大于9的时候就不需要输出了! #include<stdio.h> #include< ...

  9. hlg 2130 状压dp

    基本的状压dp 需要注意的是两点之间直线最短 所以不需要进行floyd 由于把dp的memset放在了初始化0的后面de了好久的bug.. #include<stdio.h> #inclu ...

随机推荐

  1. CentOS7下Oracle11gR2监听启动错误解决

    oracle监听程序启动失败,错误如下: [oracle@localhost ~]$ lsnrctl start LSNRCTL - Production on -APR- :: Copyright ...

  2. PLSQL连接Oracle64监听和服务的配置!

    前言: 这里不会涉及到太多关于版本问题的解决,只是简单提一下基本的监听和服务配置问题的解决,让你可以快速的用PLSQL连接上你自己创建的Oracle数据库(这里示例数据库名为ORCL); 版本问题: ...

  3. Vuex.js状态管理共享数据 - day8

    VScode文件目录: amount.vue代码如下: <template> <div> <!-- <h3>{{ $store.state.count }}& ...

  4. centos 7 安装JDK (Linux安装jdk)

    centos 7安装JDK (Linux安装jdk) 第一部分 首先查看centos 7是否有openjdk,如没有就跳过第一部分,直接第二部分. [master@bogon ~]$ java -ve ...

  5. arcgis jsapi接口入门系列(2):图层基础操作

    //图层相关demo layerFun: function () { //获取地图的所有图层(不包括的图层类型:底图图层(basemaps)) let layers = this.map.layers ...

  6. Ubuntu启动项

    原文地址:http://blog.163.com/yangshuai126%40126/blog/static/1734262652010928101641555/ Ubuntu开机之后会执行/etc ...

  7. git处理时的问题

    1. 在node.js开发的时候常常会遇到从别人的远程仓库中clone时出现文件名过长的错误, 或则是在本地npm下载之后的文件进行上传到自己的远程仓库的时候会出现 File too long的情况, ...

  8. Selenium私房菜系列7 -- 玩转Selenium Server

    本篇主要是想更进一步介绍Selenium Server的工作原理,这次我们从Selenium Server的交互模式开始. 在<第一个Selenium RC测试案例>中,我们以命令“jav ...

  9. ajax传给springMVC数据编码集问题

    前台 ajax: $.ajax("${pageContext.request.contextPath}/hello",// 发送请求的URL字符串. { dataType : &q ...

  10. 如何通过Xcode 5中集成的XCTest框架进行简单的单元测试

    XCTest 1.第一个单元测试 XCTest是Xcode 5中自带的测试框架 下面从一个Demo开始.首先用Xcode新建一个工程UnitTestDemo,工程目录结构如下: 可以看到工程下面多了一 ...