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


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

    边的三个要素

    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
    ",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为结点:
    
  • 相关阅读:
    奋力拼搏,永不言弃
    软件工程最终总结
    人生第一次JAVA编程,电梯(并不算完成版),以及IDEA里使用git
    尝试单元测试
    作业2的回答
    word count程序,以及困扰人的宽字符与字符
    关于未成品的问题:字符类型和其他种种
    随手一写,简单的四则运算练习
    浏览器缓存分析
    Codeforces Round #582 (Div. 3)
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14494386.html
Copyright © 2020-2023  润新知