diff --git a/TangDou/AcWing/Floyd/1125.cpp b/TangDou/AcWing_TiGao/T3/Floyd/1125.cpp similarity index 71% rename from TangDou/AcWing/Floyd/1125.cpp rename to TangDou/AcWing_TiGao/T3/Floyd/1125.cpp index bd2dba8..d5dcf74 100644 --- a/TangDou/AcWing/Floyd/1125.cpp +++ b/TangDou/AcWing_TiGao/T3/Floyd/1125.cpp @@ -6,10 +6,10 @@ typedef pair PII; const int N = 160; const int INF = 0x3f3f3f3f; -PII q[N]; // 每个点的坐标 -char g[N][N]; // 邻接矩阵,记录是否中间有边 -double dist[N][N]; // 每两个牧区之间的距离 -double maxd[N]; // 距离牧区i最远的最短距离是多少 +PII q[N]; // 每个点的坐标 +char g[N][N]; // 邻接矩阵,记录是否中间有边 +double dis[N][N]; // 每两个牧区之间的距离 +double maxd[N]; // 距离牧区i最远的最短距离是多少 // 欧几里得距离 double get(PII a, PII b) { @@ -31,35 +31,35 @@ int main() { // ① 距离只在同一连通块中存在,不同的连通块间的距离是INF // ② 自己与自己的距离是0 // ③ 两个牧区相连,距离=sqrt((x1-x2)^2+(y1-y2)^2) - // 本质: g + q => dist - for (int i = 0; i < n; i++) { + // 本质: g + q => dis + for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { // 1. double数组,在全局变量区,默认值是0 // 2. 当i==j时,自己到自己的距离是0,所以没动作,直接使用默认值,即d[i][i]=0,自己到自己没有距离 // 3. 当g[i][j]=='1'时,说明两者之间存在一条边,距离就是欧几里得距离计算办法 // 4. 否则就是没有路径 if (i == j) - dist[i][j] = 0; + dis[i][j] = 0; else if (g[i][j] == '1') - dist[i][j] = get(q[i], q[j]); - else // 注意:由于dist数组是一个double类型,不能用memset(0x3f)进行初始化正无穷 - dist[i][j] = INF; + dis[i][j] = get(q[i], q[j]); + else // 注意:由于dis数组是一个double类型,不能用memset(0x3f)进行初始化正无穷 + dis[i][j] = INF; } - } // ① Floyd算法 k,i,j // 原始各连通块内的多源最短路径 for (int k = 0; k < n; k++) for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) - dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]); + dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]); // ② 未建设两个连通块之间线路前,每个点的最长 最短路径 + // maxd[i]:由i出发,可以走的最远距离 double res1 = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) // 求i到离i(最短路径) 最长距离 - if (dist[i][j] < INF) maxd[i] = max(maxd[i], dist[i][j]); - // res1保持原来(两个牧场中)任意两个牧区间的最大距离(直径) + if (dis[i][j] < INF) maxd[i] = max(maxd[i], dis[i][j]); + // 所有点的最远距离PK,可以获取到最大直径 res1 = max(res1, maxd[i]); } @@ -67,7 +67,7 @@ int main() { double res2 = INF; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) - if (dist[i][j] == INF) // 如果i,j不在同一个连通块内 + if (dis[i][j] == INF) // 如果i,j不在同一个连通块内 // 连接原来不在同一连通块中的两个点后,可以取得的最小直径 res2 = min(res2, maxd[i] + maxd[j] + get(q[i], q[j])); // PK一下 diff --git a/TangDou/AcWing/Floyd/1125.drawio b/TangDou/AcWing_TiGao/T3/Floyd/1125.drawio similarity index 100% rename from TangDou/AcWing/Floyd/1125.drawio rename to TangDou/AcWing_TiGao/T3/Floyd/1125.drawio diff --git a/TangDou/AcWing/Floyd/1125.md b/TangDou/AcWing_TiGao/T3/Floyd/1125.md similarity index 100% rename from TangDou/AcWing/Floyd/1125.md rename to TangDou/AcWing_TiGao/T3/Floyd/1125.md diff --git a/TangDou/AcWing/Floyd/343.md b/TangDou/AcWing_TiGao/T3/Floyd/343.md similarity index 100% rename from TangDou/AcWing/Floyd/343.md rename to TangDou/AcWing_TiGao/T3/Floyd/343.md diff --git a/TangDou/AcWing/Floyd/343_1.cpp b/TangDou/AcWing_TiGao/T3/Floyd/343_1.cpp similarity index 100% rename from TangDou/AcWing/Floyd/343_1.cpp rename to TangDou/AcWing_TiGao/T3/Floyd/343_1.cpp diff --git a/TangDou/AcWing/Floyd/343_2.cpp b/TangDou/AcWing_TiGao/T3/Floyd/343_2.cpp similarity index 100% rename from TangDou/AcWing/Floyd/343_2.cpp rename to TangDou/AcWing_TiGao/T3/Floyd/343_2.cpp diff --git a/TangDou/AcWing/Floyd/344.cpp b/TangDou/AcWing_TiGao/T3/Floyd/344.cpp similarity index 100% rename from TangDou/AcWing/Floyd/344.cpp rename to TangDou/AcWing_TiGao/T3/Floyd/344.cpp diff --git a/TangDou/AcWing/Floyd/344.md b/TangDou/AcWing_TiGao/T3/Floyd/344.md similarity index 100% rename from TangDou/AcWing/Floyd/344.md rename to TangDou/AcWing_TiGao/T3/Floyd/344.md diff --git a/TangDou/AcWing/Floyd/345.cpp b/TangDou/AcWing_TiGao/T3/Floyd/345.cpp similarity index 100% rename from TangDou/AcWing/Floyd/345.cpp rename to TangDou/AcWing_TiGao/T3/Floyd/345.cpp diff --git a/TangDou/AcWing/Floyd/345.eddx b/TangDou/AcWing_TiGao/T3/Floyd/345.eddx similarity index 100% rename from TangDou/AcWing/Floyd/345.eddx rename to TangDou/AcWing_TiGao/T3/Floyd/345.eddx diff --git a/TangDou/AcWing/Floyd/345.md b/TangDou/AcWing_TiGao/T3/Floyd/345.md similarity index 100% rename from TangDou/AcWing/Floyd/345.md rename to TangDou/AcWing_TiGao/T3/Floyd/345.md