澳门永利网上娱乐进展初步化dist数组(保存距离的数组),sizeof(dist))进行起始化

近年在做一些图论算法题来准备机试,下面总括一下日常遇到的1类技术和陷阱:

多年来在做一些图论算法题来筹算机试,上边总计一下时不时遭逢的壹类技术和陷阱:

一.如何对INF(无穷大)进行设定?

壹.怎么着对INF(无穷大)进行设定?

 
那几个主题素材本身的建议是行使0x三f三f三f3f,进行伊始化dist数组(保存距离的数组),其它,对于如此的数组咱们仍是能够使用memset(dist,
0x三f, sizeof(dist))举办开头化;

 
这几个难题本人的建议是选拔0x3f3f3f3f,实行先河化dist数组(保存距离的数组),此外,对于如此的数组大家还能使用memset(dist,
0x叁f, sizeof(dist))进行起始化;

贰.瞩目重边

2.只顾重边

 
输入数据的时候,大概两点之间存在两条区别的边,但是先输入的离开不大,后输入的异常的大,要是不对此开始展览判别,并且利用邻接矩阵存图的话,要慎重处理:

 
输入数据的时候,只怕两点之间存在两条分歧的边,可是先输入的离开很小,后输入的不小,借使不对此举行决断,并且动用邻接矩阵存图的话,要慎重管理:

   
cin>>u>>v>>w;

   
cin>>u>>v>>w;

   
dist[u][v]=dist[v][u]=min(dist[u][v], w);

   
dist[u][v]=dist[v][u]=min(dist[u][v], w);

3.小心起源终点一样,距离为0:

3.专注源点终点同样,距离为0:

 
这么些主题素材主要出在咱们开首化dist数组时候,将dist[i][i]也设为INF了,实际上应该为0,所以能够在使用完memset后增进一句:

 
这些标题主要出在我们伊始化dist数组时候,将dist[i][i]也设为INF了,实际上应该为0,所以可以在选取完memset后增进一句:

 
for(int i = 1; i <= n; i++)

 
for(int i = 1; i <= n; i++)

   
dist[i][i] = 0;

   
dist[i][i] = 0;