在一个网络系统中有 N 个用户、M 次上网记录。每个用户可以自己注册一个用户名,每个用户名是一个只含小写字母且长度小于 1000 的字符串。每个上网的账号每次上网都会浏览网页,网页名是以一个只含小写字母且长度小于 1000 的字符串,每次上网日志里都会有记录,现在请统计每个用户每次浏览了多少个网页。
Input
第 1 行包含两个用 1 个空格隔开的正整数 N(1≤N≤1000)和 M(1≤M≤5000)。
第 2~M+1 行,每行包含 2 个用 1 个空格隔开的字符串,分别表示用户名和浏览的网页名。
Output
共 N 行,每行的第一个字符串是用户名,接下来的若干字符串是这个用户依次浏览的网页名(之间用一个空格隔开)。按照用户名出现的次序排序输出。
Sample Input
5 7 goodstudyer bookshopa likespacea spaceweb goodstudyer bookshopb likespaceb spaceweb likespacec spaceweb likespacea juiceshop gameplayer gameweb
Sample Output
goodstudyer bookshopa bookshopb likespacea spaceweb juiceshop likespaceb spaceweb likespacec spaceweb gameplayer gameweb
#include <bits/stdc++.h>
using namespace std;
struct node
{
string id;
vector<string> web;
};
int main()
{
vector<node> v;
int n, m, len;
string id, web;
cin >> n >> m;
for( int i = 1; i <= m; i++ )
{
cin >> id >> web;
bool flag = 0;
len = v.size();
for( int j = 0; j < len; j++ )
{
if( id == v[j].id )
{
v[j].web.push_back( web );
flag = 1;
break;
}
}
if( !flag )
{
node new_node;
new_node.id = id;
new_node.web.clear();
new_node.web.push_back( web );
v.push_back( new_node );
}
}
len = v.size();
for( int i = 0; i < len; i++ )
{
cout << v[i].id;
int len1 = v[i].web.size();
for( int j = 0; j < len1; j++ )
{
cout << " " << v[i].web[j];
}
cout << endl;
}
return 0;
}