2080. 邻接点

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,e,i,j,x,y;
    cin>>n >> e;
    vector<vector<int>> adj(n+1);
    for(i=0;i<e;++i)
	{
        cin>>x>>y;
        adj[x].push_back(y);
    }
    for(i=1;i<=n;++i)
        sort(adj[i].begin(),adj[i].end());
    for(i=1;i<=n;++i)
	{
        if(!adj[i].empty())
		{
            cout<<i<<endl;
            for(int j:adj[i])
                cout<<j<<" ";
            cout<<endl;
        }
    }
    return 0;
}

记得点赞+关注+收藏!!!谢谢!!! 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据您的要求回答问题。 1. 建立图的邻接矩阵和邻接表,并输出该图: 假设我们有一个无向图,其中包含 5 个节和 6 条边,如下所示: ``` 1 --- 2 | | | | 3 --- 4 | | 5 ``` 我们可以用邻接矩阵和邻接表分别表示该图: 邻接矩阵: | | 1 | 2 | 3 | 4 | 5 | |---|---|---|---|---|---| | 1 | 0 | 1 | 1 | 0 | 0 | | 2 | 1 | 0 | 0 | 1 | 0 | | 3 | 1 | 0 | 0 | 1 | 0 | | 4 | 0 | 1 | 1 | 0 | 1 | | 5 | 0 | 0 | 0 | 1 | 0 | 邻接表: 1 -> [2, 3] 2 -> [1, 4] 3 -> [1, 4] 4 -> [2, 3, 5] 5 -> [4] 2. 邻接矩阵表示的图的深度遍历和广度遍历: 深度遍历(DFS): 从某个起始节开始,依次遍历其邻居节,每个节只访问一次,并且尽可能深入每个节。当遍历到的节没有未访问的邻居节时,回溯到上一个节,继续访问其未访问过的邻居节,直至遍历完所有节。 对于邻接矩阵表示的图,我们可以使用栈来实现深度优先遍历。具体步骤如下: 1)访问起始节,并将其入栈。 2)从栈中弹出一个节,并访问其未被访问过的邻居节,并将这些邻居节入栈,直到该节没有未被访问过的邻居节。 3)重复步骤 2,直到栈为空。 对于上述图,假设我们从节 1 开始进行深度遍历,则遍历顺序为:1 -> 3 -> 4 -> 5 -> 2。 广度遍历(BFS): 从某个起始节开始,依次遍历其邻居节,每个节只访问一次,并且先访问距离起始节近的节。当遍历完起始节的所有邻居节后,继续遍历其邻居节的邻居节,直至遍历完所有节。 对于邻接矩阵表示的图,我们可以使用队列来实现广度优先遍历。具体步骤如下: 1)访问起始节,并将其入队。 2)从队列中弹出一个节,并访问其未被访问过的邻居节,并将这些邻居节入队,直到该节没有未被访问过的邻居节。 3)重复步骤 2,直到队列为空。 对于上述图,假设我们从节 1 开始进行广度遍历,则遍历顺序为:1 -> 2 -> 3 -> 4 -> 5。 3. 邻接表表示的图的深度遍历和广度遍历: 深度遍历(DFS): 对于邻接表表示的图,我们可以使用递归来实现深度优先遍历。具体步骤如下: 1)从某个起始节开始,访问该节,并将其标记为已访问。 2)递归访问该节的邻居节,直到所有邻居节都被访问过。 3)重复步骤 2,直到所有节都被访问过。 对于上述图,假设我们从节 1 开始进行深度遍历,则遍历顺序为:1 -> 2 -> 4 -> 5 -> 3。 广度遍历(BFS): 对于邻接表表示的图,我们可以使用队列来实现广度优先遍历。具体步骤如下: 1)访问起始节,并将其入队。 2)从队列中弹出一个节,并访问其未被访问过的邻居节,并将这些邻居节入队,直到该节没有未被访问过的邻居节。 3)重复步骤 2,直到队列为空。 对于上述图,假设我们从节 1 开始进行广度遍历,则遍历顺序为:1 -> 2 -> 3 -> 4 -> 5。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值