思路: STL的vector模拟
分析:
1 看懂题目之后,直接利用两个vector模拟即可
代码:
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 10010;
vector<int>v1[MAXN];
vector<int>v2[MAXN];
int m , n , num[MAXN];
void init(){
for(int i = 0 ; i < MAXN ; i++){
v1[i].clear();
v2[i].clear();
}
}
void output(){
printf("%d %d\n" , n , m);
for(int i = 1 ; i <= n ; i++){
int size = v1[i].size();
printf("%d" , size);
for(int j = 0 ; j < size ; j++)
printf(" %d" , v1[i][j]);
if(size == 0)
printf("\n\n");
else{
printf("\n%d" , v2[i][0]);
for(int j = 1 ; j < size ; j++)
printf(" %d" , v2[i][j]);
printf("\n");
}
}
}
int main(){
int r , x;
while(scanf("%d" , &m) != EOF){
init();
scanf("%d" , &n);
for(int i = 1 ; i <= m ; i++){
scanf("%d" , &r);
for(int j = 1 ; j <= r ; j++)
scanf("%d" , &num[j]);
for(int j = 1 ; j <= r ; j++){
scanf("%d" , &x);
v1[num[j]].push_back(i);
v2[num[j]].push_back(x);
}
}
output();
}
return 0;
}