PTA 甲级 1139
https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312
其实这道题目不难,但是有很多坑点!
首先数据是性别+id,id不是数字!
输出的时候必须前面补0,
另外什么自己和自己连边,重复的边都要注意,
更注意的是 -0000,这个数据,不能用int来读,我艹
#include <iostream>
#include <map>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <string.h>
using namespace std;
int n;
int m;
struct Node
{
int value;
int next;
}edge[200005];
struct Answer
{
int a;
int b;
}res[200005];
int Compare(Answer a,Answer b)
{
if(a.a == b.a)
return a.b < b.b;
return a.a < b.a;
}
map<pair<int,int>,int> dic;
map<pair<int,int>,int> dic2;
int pos;
int head[10005];
int gender[10005];
void Add(int x,int y)
{
edge[pos].value = y;
edge[pos].next = head[x];
head[x] = pos++;
}
int tag;
void fun(int x,int y)
{
tag=0;
dic2.clear();
int i = head[x];
int a[305];
int j=0;
while(i != -1)
{
if(gender[edge[i].value] == gender[x]
&& edge[i].value != y && edge[i].value!=x) {
a[j++] = edge[i].value;
}
i = edge[i].next;
}
i = head[y];
int b[305];
int k=0;
while(i!=-1)
{
if(gender[edge[i].value] == gender[y]
&& edge[i].value != x && edge[i].value!=y) {
b[k++] = edge[i].value;
}
i = edge[i].next;
}
for(int p=0;p<j;p++)
{
for(int q=0;q<k;q++)
{
if(a[p]==b[q])
continue;
if(dic[make_pair(a[p],b[q])]==1)
{
Answer s;
s.a = a[p];
s.b = b[q];
res[tag++] = s;
}
}
}
sort(res,res+tag,Compare);
printf("%d\n",tag);
for(int i=0;i<tag;i++)
{
printf("%04d %04d\n",res[i].a,res[i].b);
}
}
int main()
{
scanf("%d%d",&n,&m);
memset(head,-1,sizeof(head));
pos=0;
string xx,yy;
int x;
int y;
for(int i=0;i<m;i++)
{
cin>>xx>>yy;
x = atoi(xx.c_str());
y = atoi(yy.c_str());
if(x<0 || xx[0]=='-')
gender[abs(x)]=-1;
else
gender[x]=1;
if(y<0 || yy[0]=='-')
gender[abs(y)]=-1;
else
gender[y]=1;
x = abs(x);
y = abs(y);
if(dic[make_pair(x,y)]==1)
continue;
Add(x,y);
Add(y,x);
dic[make_pair(x,y)]=1;
dic[make_pair(y,x)]=1;
}
int k;
scanf("%d",&k);
for(int i=0;i<k;i++)
{
scanf("%d%d",&x,&y);
x = abs(x);
y = abs(y);
fun(x,y);
}
return 0;
}
PTA 甲级 1139的更多相关文章
- PTA甲级1094 The Largest Generation (25分)
PTA甲级1094 The Largest Generation (25分) A family hierarchy is usually presented by a pedigree tree wh ...
- pat甲级1139
1139 First Contact(30 分) Unlike in nowadays, the way that boys and girls expressing their feelings o ...
- PTA甲级B1061 Dating
目录 B1061 Dating (20分) 题目原文 Input Specification: Output Specification: Sample Input: Sample Output: 生 ...
- PAT甲级1139 First Contact
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312 题意: 有m对朋友关系,每个人用4为数 ...
- PTA甲级—链表
1032 Sharing (25分) 回顾了下链表的基本使用,这题就是判断两个链表是否有交叉点. 我最开始的做法就是用cnt[]记录每个节点的入度,发现入度为2的节点即为答案.后来发现这里忽略了两个链 ...
- PTA甲级—STL使用
1051 Pop Sequence (25分) [stack] 简答的栈模拟题,只要把过程想清楚就能做出来. 扫描到某个元素时候,假如比栈顶元素还大,说明包括其本身的在内的数字都应该入栈.将栈顶元素和 ...
- PTA甲级—数学
1.简单数学 1008 Elevator (20分) 模拟题 #include <cstdio> #include <cstring> #include <string& ...
- PTA甲级—常用技巧与算法
散列 1078 Hashing (25 分) Quadratic probing (with positive increments only) is used to solve the collis ...
- PTA 1139 1138 1137 1136
PAT 1139 1138 1137 1136 一个月不写题,有点生疏..脑子跟不上手速,还可以啦,反正今天很开心. PAT 1139 First Contact 18/30 找个时间再修bug 23 ...
随机推荐
- Solr缓存原理分析及配置优化
一.缓存原理 缓存,带来急速性能体验! Solr提供了一系列的内置缓存来优化查询性能.Solr的缓存原理主要涉及以下4个方面: 1.缓存大小及缓存置换法 从缓存大小的角度来看,不能将缓存设置的太大,否 ...
- 【Java_基础】HashMap的工作原理
转载至博客:HashMap的工作原理
- lua 根据路径获取文件名
require "lfs" function dirpath(path) for file in lfs.dir(path) do -- lfs.dir 根据路径获取该路径下的文件 ...
- Ubuntu 16.04.6 + Win10 双系统时间错误且不一致
1.在Win系统下,按Win键 + R,输入regedit 运行, 2.打开注册表,按照路径查找 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet ...
- Redash - 安装和初试
前言 当业务成长到一定规模之后,会有许多想看各种不同类型报表的需求,如果单独做在后台,那么无疑会浪费前端和后端开发的时间.所以一直都有在寻找一款好用的BI工具.后面查了一下,市面上好用的一些非商业的B ...
- linux虚拟机获取不到ip的解决方法 --
问题描述: 在win10操作系统上,安装了centos7 虚拟机,安装后,用wifi网络可以获取ip,但是切换到手机热点或有线网络就获取不到ip 解决办法: 按照一般的修改ONBOOT =yes, 然 ...
- docker删除镜像Error response from daemon: conflict: unable to remove repository reference
Docker无法删除images,由于是依赖container. 1.进入root权限 sudo su 2. 列出所有运行或没有运行的镜像 docker ps -a 3.停止containe ...
- freeradius client 和jradius安装编译
freeradius client radtest只是用来调试的,radclient功能更强大.用法如下: From the man page we can see that radclient gi ...
- LeetCode 489. Robot Room Cleaner
原题链接在这里:https://leetcode.com/problems/robot-room-cleaner/ 题目: Given a robot cleaner in a room modele ...
- django -- ORM实现作者增删改查
前戏 前面我们已经实现了出版社的增删改查,书的增删改查,书和出版社的对应关系.现在来写一下作者的增删改查和书的对应关系,那书和作者有什么关系呢?一个作者可以写多本书,一本书可以有多个作者,所以书和作者 ...