思路: 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; }