【题意】
输入一个n,n行
每行输入一个人名a,reposted 和 另一个人名b,第一行的人名b一定是polycarp(不区分大小写)
问人名传递从polycarp开始的链的总长度。【思路】
这个是用map做的,然后用a的人名做下标。
【源代码】
#include<iostream>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cmath>
using namespace std;
#include<stack>
#include<cstdlib>
#include<string>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<algorithm>
#include<map>
#define ll long long
/*struct node{ double n,v; double x;} a[10010];*/
/*bool cmp(int a, int b){ //if(a.v!=b.v) return a>b; //else return a.t > b.t;}*/
//string a;
//int maxx[100000],minn[100000],a[100000];
//ll mod = 1e9 + 7;
//ll dp[30][11000];
//int v[10010],t[10010];
const int N = 100005;
int main()
{
map<string,int> s;
s["polycarp"]=1;
int n;
cin>>n;
int res=1;
for(int i=0; i<n; i++)
{
string a,b,op;
cin>>a>>op>>b;
//全都转化为小写
for(int j=0; j<a.length(); j++)
{
a[j]=tolower(a[j]);
}
for(int j=0; j<b.length(); j++)
{
b[j]=tolower(b[j]);
}
//链接
s[a]=s[b]+1;
res=max(res,s[a]);
}
cout<<res<<endl;
return 0;
}