昨天学习了有关图论的基础知识(包括邻接矩阵邻接表什么的)和拓展(例如求最小问题),其实都还是比较基础的,但学起来不无困难,原因是函数和结构体当时没有学得很好,现在隔了这么长时间再来看图论的相关程序里出现的函数和结构体就相当懵逼了.....以至于现在寸步难行,还得和基础的函数、结构体较劲.....
其实现在看来,图论的思想还不难理解,就是将数字结成了网状进行相关计算,比如田地上的环一题(呃...我并没有自己解出来,因为函数和结构体实在不会用,但能看懂吧),这道题要求的是与奶牛1不相连的奶牛序号,大致思路如下:
首先声明一个函数,这个函数的功能是让所有除奶牛X以外的所有奶牛的编号全部为false,也就是说先假设奶牛X没有与任何奶牛相连(由于题意要求的是奶牛1,因此在设定完这个函数的功能后只需让X等于1即可)。其次,利用矩阵输入奶牛编号使编号相对的奶牛(也就是实际上连在一起的奶牛)的值为true,这里需要注意,由于“相连”这个设定隐含的是“无向图”这个概念,因此矩阵正反都需要设为true(即如果奶牛1与奶牛2相连,则奶牛2与奶牛1也为相连)。然后就可以将“X等于1”代入设定好的函数内,即按之前的函数功能要求操作一遍。之后随便定义一个flag为假,再利用for循环挨个查询奶牛在矩阵中与谁的值为false(就是没有相连),然后输出即可。
图论本身并不是一个新的操作,而是一种新的思想方法(感觉就像搞出来坑oier的),将数据转换为图形上的“相连”这一概念,从而衍生出各种问题.....它的本质,仍然是基于for、if和数组(当然还有结构体和函数,只是我真的不会用!.........心很痛orz.....)之上的。
大概就是这样了,好好努力吧!