题目大意:
给出P个栏目
每个栏目分别由几个作者一起出版,输入的方式为:
作者名1,作者姓1.作者名2,作者姓2 ……作者名n,作者姓n
每个栏目的作者之间有关系
给出N个询问
每个询问输入的为
作者名,作者姓。问通过几层关系,能找到“Erdos, P.”这个人,若能查到则输出“作者名,作者姓:(关系数目)”,若不能查到,则输出“作者名,作者姓: infinity\n”
题目思路:
当两个作者有关系,那么就连上一条双向边。然后从“Erdos, P.”这个人为起点开始BFS,记录下到能到的点(即其他作者)的最短路,有关系的属于同一层。
#include <iostream>
#include <map>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
#define N 10100
#define M 1000010
map<string,int> s;
vector<int> g[N];
char name[N];
int p,n;
int author[N*4];
int id;
int vis[N*10];
int work[N];
struct node
{
int point;
int step;
void in(int _point,int _step)
{
point = _point