题目描述 对一幅有向图,给出以每个点为起点的所有边,求以每个点为终点的所有边。
输入格式 从标准输入读入数据。
输入第一行包含一个正整数n,保证n≤3×105。所有的点用不超过 n的正整数编号。
接下来n行。这 n 行中的第 i 行,先给出一个非负整数vi ,然后给出 vi 个正整数 ,表示有向边(v,u) 。保证同一行的 u按从小到大的顺序排列,可能会出现重边和自环。
保证边的总量不超过106 。
输出格式 输出到标准输出。
输出的第一行包含一个正整数 。
接下来 n 行。这 n 行中的第 i 行,先给出一个非负整数vi ,然后给出 vi 个正整数 ,表示有向边(u,v) 。要求同一行的 u 从小到大排列。
#include<bits/stdc++.h>
using namespace std;
int n,a[300005];
std::priority_queue <int> h[300005];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int v;
scanf("%d",&v);
for(int j=1;j<=v;j++){
int u;
scanf("%d",&u);
h[u].push(0-v);
a[u]++;
}
}
printf("%d\n",n);
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
while(!h[i].empty()){
printf("%d ",0-h[i].top());
h[i].pop();
}
printf("\n");
}
return 0;
}
求调qwq