社区讨论

求助我万能的谷民

灌水区参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lv7vrzq1
此快照首次捕获于
2024/04/20 17:12
2 年前
此快照最后确认于
2024/04/20 19:38
2 年前
查看原帖
题目:
顺序 查看测评数据信息 给定一个 n个点 m条边的有向图 G,结点编号从 1至 n。对于 u = 1, 2, 3 ,…n,依次完成如下要求:对于 u 的所有出边(即从 u 出发的边),按照从小到大的顺序输出出边所指向的节点编号。依次完成的含义是,先按顺序输出 u = 1的出边所指向的点的编号,再按顺序输出 u = 2的出边所指向的点的编号……最后按顺序输出 u = n 的出边所指向的点的编号。
1<=N,M<=500000
输入格式 第一行是两个整数,分别表示点的个数 n和边的个数 m。
接下来 m 行,每行两个整数 u, v,表示一条由 u 指向 v 的边。
输出格式 输出 n行,每行若干个用空格隔开的整数。第 i行输出节点 i 的出边所指向的节点编号。注意,如果一个结点不存在出边,你同样需要输出一个空行。
输入/输出例子1 输入:
3 4
1 3
1 2
3 2
3 1
输出:
2 3
1 2
样例解释 无
我的代码(85分,帮忙改改):
CPP
#include<bits/stdc++.h>
using namespace std;
vector<vector<long long>>graph;
void addEdge(int u,int v) {
    graph[u].push_back(v);
}
void printOutEdges(int u) {
    sort(graph[u].begin(),graph[u].end());
    for(int v:graph[u])cout<<v<<' ';
    cout<<"\n";
}
int main() {
    long long n,m;
    cin>>n>>m;
    graph.resize(n+1);
    for(int i=1;i<=m;i++){
        long long u,v;
        cin>>u>>v;
        addEdge(u,v);
    }
    for(int i=1;i<=n;i++)printOutEdges(i);
    return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...