站外题求助
  • 板块学术版
  • 楼主_DX3906_
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/6/26 20:17
  • 上次更新2023/11/3 12:22:18
查看原帖
站外题求助
564850
_DX3906_楼主2023/6/26 20:17

题目描述 对一幅有向图,给出以每个点为起点的所有边,求以每个点为终点的所有边。

输入格式 从标准输入读入数据。

输入第一行包含一个正整数n,保证n≤3×105n\le3 \times 10^5。所有的点用不超过 n的正整数编号。

接下来n行。这 n 行中的第 ii 行,先给出一个非负整数viv_i ,然后给出 viv_i 个正整数 ,表示有向边(v,u)(v,u) 。保证同一行的 uu按从小到大的顺序排列,可能会出现重边和自环。

保证边的总量不超过10610^6 。

输出格式 输出到标准输出。

输出的第一行包含一个正整数 。

接下来 n 行。这 n 行中的第 i 行,先给出一个非负整数viv_i ,然后给出 viv_i 个正整数 ,表示有向边(u,v)(u,v) 。要求同一行的 uu 从小到大排列。

#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

2023/6/26 20:17
加载中...