本条题材自身的建议是利用0x三f叁f叁f三f,进行最先化dist数组(保存距离的数组)

近些年在做壹些图论算法题来准备机试,上边计算一下时不时遭逢的1类技巧和陷阱:

近年来在做1些图论算法题来准备机试,上边计算一下时不时遭遇的一类技巧和陷阱:

一.什么对INF(无穷大)实行设定?

壹.什么样对INF(无穷大)实行设定?

 
那几个题材本身的提出是接纳0x3f3f叁f三f,举行伊始化dist数组(保存距离的数组),其余,对于如此的数组大家还可以够利用memset(dist,
0x三f, sizeof(dist))实行开端化;

 
那一个难题笔者的提出是行使0x三f三f3f三f,实行开端化dist数组(保存距离的数组),其余,对于这么的数组大家还是能利用memset(dist,
0x3f, sizeof(dist))进行初阶化;

二.小心重边

贰.瞩目重边

 
输入数据的时候,或许两点之间存在两条差别的边,然而先输入的相距较小,后输入的较大,尽管不对此开始展览判定,并且应用邻接矩阵存图的话,要慎重处理:

 
输入数据的时候,或许两点时期存在两条分裂的边,不过先输入的相距较小,后输入的较大,假若不对此实行判定,并且采取邻接矩阵存图的话,要慎重处理:

   
cin>>u>>v>>w;

   
cin>>u>>v>>w;

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

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

三.留意起点终点相同,距离为0:

三.小心源点终点相同,距离为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;