靠二进制画几何[图论]

今天来浅谈一下图,听说自己写总结的人grade++,rp++。

像我这样可爱的人怎么能错过这个机会呢嘤嘤嘤。

毕竟图至少啃了15day++。

恩曾经的小弱渣从来都是仰望高端玩家虐图论

听说noip上一年考两道大图(つд⊂)而小弱渣还没学到

吓得本宝宝虎躯一震!!

恩废话不多说,来开正文。

-------------------我是萌哒哒的分割线--------------------

刚开始先学图的储存。

  1. 邻接矩阵

邻接矩阵就是跟二维数组长得一毛(mu)一样奇奇怪怪的东xi

 1 #include<iostream>
 2 using namespace std;
 3 int n,a[100][100];
 4 int main()
 5 {
 6     cin>>n;
 7     //直接给出邻接矩阵,直接读。
 8     for(int i=1;i<=n;i++)
 9         for(int j=1;j<=n;j++)
10             cin>>a[i][j];
11     //给出两个顶点和权值
12     for(int i=1;i<=n;i++)
13     {
14         int xx,yy,vv;
15         cin>>xx>>yy>>vv;
16         a[xx][yy]=vv;
17         //双向图时
18         a[yy][xx]=vv;
19     }
20     //给出每个顶点的临界点
21     for(int i=1;i<=n;i++)
22     {
23         int k;
24         cin>>k;
25         for(int j=1;j<=k;j++)
26         {
27             int x;
28             cin>>x;
29             a[i][x]=1;
30             a[x][i]=1;
31         }
32     }
33     return 0;
34 }

邻接矩阵

2.邻接表

第一次看这玩意的时候内心万般草泥马奔过。

这TM都是什么玩意

后来经过滑稽大师cdc柴大叔的指导下,莫名其妙知道了些什么

然而教材太过简单,时常还会有些错的

小弱渣花了一整节自习课照着书上画了一幅图,发现!原来!跟书上一毛(mu)一样。本宝宝不开心,哦是十分不开心。

这大概是这个样子的

 1 #include<iostream>
 2 using namespace std;
 3 int n;
 4 int link[10010],len=0;
 5 struct ha
 6 {
 7     int y,v,next;
 8 }e[10010];
 9 void insert(int xx,int yy,int vv)
10 {
11     e[++len].next=link[xx];
12     link[xx]=len;
13     e[len].y=yy;
14     e[len].v=vv;
15 }
16 int main()
17 {
18     cin>>n;
19     int xx,yy,vv;
20     for(int i=1;i<=n;i++)
21     {
22         cin>>xx>>yy>>vv;
23         insert(xx,yy,vv);
24         insert(yy,xx,vv);
25     }
26     return 0;
27 }

邻接表

如果出现重边!邻接矩阵必须判断!!

-----------------我是萌萌哒的分割线------------------

DFS:以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问过。

时间: 2024-10-12 10:45:13

靠二进制画几何[图论]的相关文章

【CSS3】---画几何图

<!DOCTYPE html> <html> <head> <style> .nav ul{ width:980px; margin:0px auto 0px auto; list-style-type:none; } a{ position:relative; width:60px; height:28px; line-height:28px; border:1px solid #ccc; color:#ccc; font-size:12px; displ

多第八田间学校:几何+图论出度+模拟+找到规律

HDU 4946 pid=1002&cid=509" style="color:rgb(26,92,200); text-decoration:none; font-family:Tahoma; background-color:rgb(215,235,255)">Area of Mushroom 这题WA了7发才过,队友做的,然后一起debug了好久. 刚開始是没排序. 然后是在同一个位置的点没有处理好. 然后把这两个问题搞定就A了. #include <

Delphi 的知识体系

第一部分   快速开发的基础 第1章   Delphi 5下的Windows编程    1 1.1   Delphi产品家族    1 1.2  Delphi是什么    3 1.2.1   可视化开发环境    3 1.2.2   编译器的速度和已编译代码的效            率    4 1.2.3   编程语言的功能及其复杂性    4 1.2.4   数据库结构的灵活性和可扩展性    5 1.2.5   框架对设计和使用模式的扩充    5 1.3   历史回顾    5 1.3

关于图的顶点染色问题的各种算法的C++实现之初探(一)——引言与简介

我是一个数学工作者,专业方向是图论.研究图论已经十年有余.一个月前,一个偶然的机会让我萌生了一个念头,那就是我想尝试用C++写出我所学过的图论方面的算法.作为一个数学工作者,过去一直是纸上谈兵,我之前并没有真正写过多少程序.确实,只知道写证明的纯理论的数学工作者往往自视甚高地看不起工程中实际写程序的程序员(即使程序员圈子里也有不少厉害的数学工作者),另一个方向的鄙视链好像也一定程度上存在着.于是,我不想只作一个"思想上的巨人行动上的矮子",便有了这个系列的博客. 首先声明,我不是专业的

关于数学建模——入门

数学建模的概念:系统的描述某种本质特征的数学表达式 分类:初等/几何/图论/组合/微分方程/线性规划模型/非线性规划模型/目标规划模型/统计回归模型等... 步骤:建立.求解.分析.检验 Notice:数学建模没有唯一正确的答案,评价模型优劣的标准是实践. Model+Algorithm+Program=Map(映射) 数学建模论文的结构: 1.title: 2.summary:3.restatement of the problem(问题引言):4.analysis of the proble

acm steps

1.1 根蒂根基输入输出:LCY的 A+B 8题 (1089~1096) 1.2 C说话根蒂根基:根蒂根基入门题 (2104,2088,1076,2095,1061,1170,3361,1197) 1.3 排序,贪婪: 1052 很恶心的一道贪婪题 3177 我推荐的这题貌似卡了不少人,遵守差值排序 (1236,1084,2093,2111,2187,1157) 2.1 简单数学题:GCD和素数生成占了很大一项目组 1071 积分题 1717 这题斗劲麻烦 (1108,2138,2504,121

POJThe Doors AND NYIST 有趣的问题

题目链接:pid=227" target="_blank">Click Here~ 题目分析: 给你横纵坐标分别表示门所在的位置.叫你求出从起点到终点的最短距离. 算法分析: 该题好像有多种解法,我仅仅说我做的. 我用的是几何+图论. 建模分析: 1.先推断两个点之间能否够连接. 2.推断两个点能否够链接的方法是用是否推断墙与这两点连成的线段是否相交. 3.假设没有相交则直接连接. 4.最后最短路求出结果就好了 #include <iostream> #in

细读cow.osg

细读cow.osg 转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html 对,就是那只著名的奶牛. //Group节点,可有子节点.Group { UniqueID Group_0         //Gourp名称DataVariance STATIC   //不知道用来干嘛,一般都是staticcullingActive TRUE      //参与culling?num_children 1         

【uva 658】It&#39;s not a Bug, it&#39;s a Feature!(图论--Dijkstra算法+二进制表示)

题意:有n个潜在的bug和m个补丁,每个补丁用长为n的字符串表示.首先输入bug数目以及补丁数目.然后就是对m 个补丁的描述,共有m行.每行首先是一个整数,表明打该补丁所需要的时间.然后是两个字符串,地一个字符串 是对软件的描述,只有软件处于该状态下才能打该补丁该字符串的每一个位置代表bug状态(-代表该位置没bug,+代 表该位置有bug,0表示该位置无论有没有bug都可打补丁).然后第二个字符串是对打上补丁后软件状态的描述 -代表该位置上的bug已经被修复,+表示该位置又引入了一个新的bug