今天鞋百科给各位分享有向图的权重怎么算的知识,其中也会对用C语言编写求有向图有多少连通图的算法(数据结构题目)(c语言有向图的邻接矩阵)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!

用C语言编写求有向图有多少连通图的算法(数据结构题目)

深度优先搜索。

http://www***blogs***m/dzkang2011/p/bfs_dfs.html

#include #include using namespace std;#define maxn 100 //最大顶点个数int n, m; //顶点数,边数struct arcnode //边结点{ int vertex; //与表头结点相邻的顶点编号 int weight = 0; //连接两顶点的边的权值 arcnode * next; //指向下一相邻接点 arcnode() {} arcnode(int v,int w):vertex(v),weight(w),next(NULL) {} arcnode(int v):vertex(v),next(NULL) {}};struct vernode //顶点结点,为每一条邻接表的表头结点{ int vex; //当前定点编号 arcnode * firarc; //与该顶点相连的第一个顶点组成的边}Ver[maxn];void Init() //建立图的邻接表需要先初始化,建立顶点结点{ for(int i = 1; i vertex == b) //如果不要去重边,去掉这一段 { if(p->weight weight = w; return ; } while(p->next != NULL) { if(p->next->vertex == b) //如果不要去重边,去掉这一段 { if(p->next->weight next->weight = w; return ; } p = p->next; } p->next = q; }}void Insert2(int a, int b, int w) //头插法,效率更高,但不能去重边{ arcnode * q = new arcnode(b, w); if(Ver[a].firarc == NULL) Ver[a].firarc = q; else { arcnode * p = Ver[a].firarc; q->next = p; Ver[a].firarc = q; }}void Insert(int a, int b) //尾插法,插入以a为起点,b为终点,无权的边,效率不如头插,但是可以去重边{ arcnode * q = new arcnode(b); if(Ver[a].firarc == NULL) Ver[a].firarc = q; else { arcnode * p = Ver[a].firarc; if(p->vertex == b) return; //去重边,如果不要去重边,去掉这一句 while(p->next != NULL) { if(p->next->vertex == b) //去重边,如果不要去重边,去掉这一句 return; p = p->next; } p->next = q; }}void Insert2(int a, int b) //头插法,效率跟高,但不能去重边{ arcnode * q = new arcnode(b); if(Ver[a].firarc == NULL) Ver[a].firarc = q; else { arcnode * p = Ver[a].firarc; q->next = p; Ver[a].firarc = q; }}void Show() //打印图的邻接表(有权值){ for(int i = 1; i (" vertex weight next; } cout NULL" " vertex; p = p->next; } cout NULL" vertex]) { parent[p->vertex] = s; dfs(p->vertex); } p = p->next; } time++; f[s] = time;}void dfs_travel() //遍历所有顶点,找出所有深度优先生成树,组成森林{ for(int i = 1; i > n >> m; Init(); while(m--) { cin >> a >> b; //输入起点、终点 Insert2(a, b); //插入操作 } Show2(); //邻接表 dfs_travel(); //遍历 int cnt = 0; //连通图个数 for(int i = 1; i <= n; i++) if(parent[i] == -1) cnt++; printf("%d\n", cnt); return 0;}

权重计算方法

1、权重可通过划分多个层次指标进行判断和计算,常用的方法包括层次分析法、模糊法、模糊层次分析法和专家评价法等。

用C语言编写求有向图有多少连通图的算法(数据结构题目)

2、有题可以,授课老师的平均分=(10+9)/2=9.5 分 ,同学的平均分=(10+8)/2=9分。根据权重分别是4、3、2、1,可以计算出甲同学测评分数为:

9×0.4+9.5×0.3+9×0.2+9×0.1=9.15分。

扩展资料

权重设置的具体方法

1、排序法

是罗列出某个岗位所有的绩效考核指标,然后通过两两对比的方法对这些指标按照重要性进行排序,越排在前面的指标权重越大,越排在靠后的权重越小。这个方法只能确定各个指标的相对权重,对于设置指标的绝对权重的意义不是很大,相对权重确定后还是要按照其他方法来确定绝对权重的,另外,在对指标进行排序时也一定要有该岗位的上级、任职者和HR都一起参与才行

2、经验法

这样的方法就是靠个人的经验判断了,经验不一定完全是自己的,也可以参照外部同行业企业的经验嘛。完全自己在闭门造车是非常难的。

参考资料来源:百度百科-权重

权重计算方法

权重系数是表示某一指标项在指标项系统中的重要程度,它表示在其它指标项不变的情况下,这一指标项的变化,对结果的影响。
出题人的考察点在于看你是否理解了权重概念。

以题中所举案例,当权重为W1时,所有指标项均为1,也就是说不分重要程度,同等重要,当权重为W2时,突出技术能力和**思想,此两项为1,高于其他项。当权重为W3时,突出学历和组织能力,此两项为1,高于其他项。
那么当突出技术能力和**思想时,权重选项为W2,此时,甲得分为0.9×1+0.5×0.5+1×1+1×0.8+0.8×0.8+0.8×0.7+1×0.6=4.75.乙得分为0.7×1+0.9×0.5+0.8×1+0.8×0.8+1×0.8+1×0.7+0.7×0.6=4.51.

数据结构 带权图 如何求最小生成树的权?

解题思路:这个问题可以作为一个物理电路来处理,所谓最小生成树的权就可以理解为通过电路的总电压。各个节点之间的权就可以理解为通过分路的电压值。这是一个并联电路。