【1139】First Contact (30分)

简介: 【1139】First Contact (30分)【1139】First Contact (30分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<cmath>
#include<string.h>
#include<string>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std;  
vector<int>graph[10005];  //图
bool boy[10005]; //下标为ID,元素表示该ID是否是男
int N,M,K,vstart,vend;
int main(){   
  scanf("%d%d",&N,&M);
  for(int i=0;i<M;i++){ //读取边的数据
    string a,b;
    cin>>a>>b;
    int ia=abs(stoi(a)),ib=abs(stoi(b));//将字符串化为正整数
    graph[ia].push_back(ib);//向图中加入边
    graph[ib].push_back(ia);//向图中加入边
    boy[ia]=(a[0]!='-'); //表示该人性别
    boy[ib]=(b[0]!='-');//表示该人性别
  }
  scanf("%d",&K);
  while(K--){
    scanf("%d%d",&vstart,&vend);//读取首尾结点
    vector<pair<int,int>>result;//存储符合题目要求的两个结点
    for(int i:graph[abs(vstart)])//遍历首节点的朋友
      if(i!=abs(vend)&&i!=abs(vstart)&&boy[i]==boy[abs(vstart)])
      //找到非首尾结点且与首结点性别相同的朋友作为第一个结点
        for(int j:graph[i]) //遍历第一个结点的朋友
          if(j!=abs(vend)&&j!=abs(vstart)&&boy[j]==boy[abs(vend)])
              //找到非首尾结点且与尾结点性别相同的朋友作为第二个结点
            for(int k:graph[j]) //遍历第二个结点的朋友
              if(k==abs(vend)) //尾结点是第二个结点的朋友
                  result.push_back(make_pair(i,j)); //i,j两个结点符合要求
    printf("%d\n",result.size());
    sort(result.begin(),result.end()); //排序
    for(auto&i:result) //输出
      printf("%04d %04d\n",i.first,i.second);
  }
  system("pause");
  return 0;   
}
相关文章
7-3 通讯录排序(20分)
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
131 0
SAP WM初阶根据Group Number来查询与之有关的TO单
SAP WM初阶根据Group Number来查询与之有关的TO单
SAP WM初阶根据Group Number来查询与之有关的TO单
|
存储
通讯录中每个通讯者的信息包括编号、姓名、性别、电话、E-mail地址;采用单链表结构存储
通讯录中每个通讯者的信息包括编号、姓名、性别、电话、E-mail地址;采用单链表结构存储
205 0
通讯录中每个通讯者的信息包括编号、姓名、性别、电话、E-mail地址;采用单链表结构存储
【1016】Phone Bills (25 分)
【1016】Phone Bills (25 分) 【1016】Phone Bills (25 分)
94 0
【1120】Friend Numbers (20 分)
【1120】Friend Numbers (20 分) 【1120】Friend Numbers (20 分)
93 0
打印某个user在指定时间段内做过的personalization detail
This question is asked by consultant during Jerry’s supporting as dev angel. Partner wants to develop some report in the backend to track which users have performed what kinds of Fiori group personlization but he didn’t know the corresponding database table which contains the needed information, or
打印某个user在指定时间段内做过的personalization detail
【1037】Magic Coupon (25 分)
负数——直接分别对2个集合sort排序后,分别用两个while,即第一个while是对两个集合同时从左到右进行遍历,两两乘积后累加。第二个while是对两个集合同时从右到左进行遍历,即对2个大整数进行两两乘积后累加。 在第二个while之前,要分别取位置n-1和m-1,而非取两个集合的最小值min{n-1,m-1}。 3.注意
96 0
【1009】Product of Polynomials (25 分)
【1009】Product of Polynomials (25 分) 【1009】Product of Polynomials (25 分)
81 0
|
存储 C++
SAP MM 存储条件 - Room Temperature Vs Ambient
SAP MM 存储条件 - Room Temperature Vs Ambient