Title

图论-存取图的技巧-按起点分类

图论-存取图的技巧-按起点分类

边的三个要素

  1. 边(权值)(暂时不考虑)
  2. 起点
  3. 终点
  • 新增元素
    1. 连接到上一条起点相同的边的传送门
    2. 以某结点为起始结点的当前线段的序数

思路

​ 每读入一条线段,把以该线段起点的当前线段的序数连接到当前读入的这一条上(从而实现与上一条具有相同起点的边的联系),并进行更新,方便下一条相同起点线段的联系(预留一个接口/位置)

代码实现

#include<iostream>
#include<stdio.h>
using namespace std;
int V,E;
struct edge{
	int from,to,next;
};
edge edges[102]; 
int cur_link[100];
int main()
{
	int u,v;
	cin>>V>>E;
	for(register int i=1;i<=E;i++)
	{
		cin>>edges[i].from>>edges[i].to;
		edges[i].next=cur_link[edges[i].from];//绑定好上一条 
		cur_link[edges[i].from]=i;//更新状态 
//		u=edges[i].from;v=edges[i].to;
//		edges[i].next=cur_link[u];
//		cur_link[u]=i;
	}
	for(register int i=1;i<=V;i++)
	{
		cout<<"当前是以"<<i<<"为结点:"<<endl;
		for(int order=cur_link[i];order!=0;order=edges[order].next)
		      {
		      	    printf("第%d条: 起点是%d,终点是%d\n",order,edges[order].from,edges[order].to);
			  }
	}
	return 0;
}

输入

4 4
1 3
1 2
1 4
2 3

输出

当前是以1为结点:
第3条: 起点是1,终点是4
第2条: 起点是1,终点是2
第1条: 起点是1,终点是3
当前是以2为结点:
第4条: 起点是2,终点是3
当前是以3为结点:
当前是以4为结点:
posted @ 2021-03-07 13:34  BeautifulWater  阅读(80)  评论(0编辑  收藏  举报