PDF

暑假开始准备转移博客,试了几个都不怎么满意(我还去试了下LineBlog 不知道那时候在想什么。。),屯着一堆文章,,到时候一起发了

现在暂时转移至WordPress,不过还在完善中,预计。。算了不瞎预计的好。。

课上说最好做个代码集,嗯嗯 我也觉得挺有必要的

毕竟现在我连Floyd怎么写都忘了 无脑SPFA_(:з」∠)_

反正有用没用都稍微写一下,暂定是目录这些,有些还在找例题、整理代码什么的,所以还是空的。

GItHub上还欠了几题,之后会补上来。

我做的二级目录到博客园就被无视了,,将就看看吧

感觉实在简陋了些啊。。

题号以作业次数为准


STL


stack

头文件

  1. #include<stcak>
  2. using namespace std;

声明

  1. stack<数据类型> 变量名;
  1. a.empty() 判断栈是否为空
  2. a.pop() 移除栈顶元素
  3. a.push(b) 将元素b压入栈中
  4. a.size() 返回栈中元素个数
  5. a.top() 返回栈顶元素

queue

头文件

  1. #include<queue>
  2. using namespace std;

声明

  1. queue<数据类型> 变量名;
  1. a.empty() 判断队列是否为空
  2. a.pop() 将队头元素出队
  3. a.push(b) 将元素b入队
  4. a.size() 返回队列中元素个数
  5. a.front() 返回队头元素
  6. a.back() 返回队尾元素

priority_queue

头文件

  1. #include<queue>
  2. using namespace std;

声明

  1. priority_queue<数据类型> 变量名;
  1. a.empty() 判断队列是否为空
  2. a.pop() 移除队头元素
  3. a.push(b) 将元素b入队
  4. a.size() 返回队列中元素个数
  5. a.top() 返回队头元素
  6. //默认从大到小
  7. //从小到大&&多关键字
  8. struct t
  9. {
  10. int p, q;
  11. };
  12. priority_queue<t> a[n];
  13. bool operator < (t x, t y)
  14. {
  15. return x.p < y.p;
  16. }

sort

头文件

  1. #include<algorithm>
  2. using namespace std;
  1. //从小到大
  2. int a[n];
  3. sort(a,a+n);
  4. //从大到小
  5. int compare(int x, int y)
  6. {
  7. return x > y;
  8. }
  9. sort(a, a + 3, compare);
  10. //多关键字
  11. struct t
  12. {
  13. int p, q;
  14. };
  15. t a[n];
  16. int compare(t x, t y)
  17. {
  18. if (x.p == y.p) return x.q > y.q;
  19. else return x.p > y.p;
  20. }
  21. sort(a, a+n, compare);

功能函数


MAX

  1. int max(int x, int y)
  2. {
  3. return x > y ? x : y;
  4. }

MIN

  1. int min(int x, int y)
  2. {
  3. return x < y ? x : y;
  4. }

最大公约数

  1. int gcd(int x, int y)
  2. {
  3. if (y == 0) return x;
  4. else return gcd(y, x%y);
  5. }

基础算法与数据结构


快速排序

  1. #include<iostream>
  2. using namespace std;
  3. int i, j, k, n, m, s, t, a[1000];
  4. void q(int l, int r)
  5. {
  6. int i, j, x, t;
  7. i = l;
  8. j = r;
  9. x = a[(i + j) / 2];
  10. do
  11. {
  12. while (a[i] < x) i++;
  13. while (a[j] > x) j--;
  14. if (i <= j)
  15. {
  16. t = a[i];
  17. a[i] = a[j];
  18. a[j] = t;
  19. i++;
  20. j--;
  21. }
  22. } while (i <= j);
  23. if (j > l) q(l, j);
  24. if (i < r) q(i, r);
  25. }
  26. int main()
  27. {
  28. cin >> n;
  29. for (i = 1; i <= n; i++)
  30. cin >> a[i];
  31. q(1, n);
  32. for (i = 1; i <= n; i++)
  33. cout << a[i] << ' ';
  34. return 0;
  35. }

归并排序

2.1 nxd

给定 n 个数 a1,a2,...,an,求满足条件的(i,j)数量: i < j 且 a[i] < a[j]

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. int a[200000], b[200000];
  6. __int64 s;
  7. void p(int l, int m, int r)
  8. {
  9. int i = l;
  10. int j = m + 1;
  11. int k = l;
  12. while (i <= m && j <= r)
  13. {
  14. if (a[i] < a[j])
  15. {
  16. b[k++] = a[j++];
  17. s += m - i + 1;
  18. }
  19. else
  20. {
  21. b[k++] = a[i++];
  22. }
  23. }
  24. while (i <= m) b[k++] = a[i++];
  25. while (j <= r) b[k++] = a[j++];
  26. for (i = l; i <= r; i++)
  27. a[i] = b[i];
  28. }
  29. void q(int l, int r)
  30. {
  31. if (l < r)
  32. {
  33. int m = (l + r) >> 1;
  34. q(l, m);
  35. q(m + 1, r);
  36. p(l, m, r);
  37. }
  38. }
  39. int main()
  40. {
  41. int n;
  42. scanf("%d", &n);
  43. for (int i = 0; i<n; i++)
  44. scanf("%d", &a[i]);
  45. s = 0;
  46. q(0, n - 1);
  47. printf("%I64d", s);
  48. return 0;
  49. }

表达式求值(调度场算法)

3.2 calculator

  1. #include<stdio.h>
  2. #include<string.h>
  3. int i, j, k, n, m, s, t, a[1000];
  4. char b[2000], c[2000], d[2000];
  5. int main()
  6. {
  7. scanf("%s", &b);
  8. i = 0;
  9. j = 0;
  10. k = 0;
  11. n = strlen(b);
  12. //中缀转后缀
  13. while (i < n)
  14. {
  15. if ((b[i] >= '0') && (b[i] <= '9'))
  16. {
  17. while ((b[i] >= '0') && (b[i] <= '9'))
  18. {
  19. c[j++] = b[i++];
  20. }
  21. c[j++] = '!';
  22. }
  23. if ((b[i] == '+') || (b[i] == '-'))
  24. {
  25. while ((k > 0) && (d[k - 1] != '('))
  26. {
  27. c[j++] = d[k - 1];
  28. k--;
  29. }
  30. d[k++] = b[i];
  31. }
  32. if ((b[i] == '*') || (b[i] == '/'))
  33. {
  34. while ((k > 0) && (d[k - 1] != '(') && ((d[k - 1] == '*') || (d[k - 1] == '/')))
  35. {
  36. c[j++] = d[k - 1];
  37. k--;
  38. }
  39. d[k++] = b[i];
  40. }
  41. if (b[i] == '(')
  42. {
  43. d[k++] = b[i];
  44. }
  45. if (b[i] == ')')
  46. {
  47. while ((k > 0) && (d[k - 1] != '('))
  48. {
  49. c[j++] = d[k - 1];
  50. k--;
  51. }
  52. if (k > 0) k--;
  53. }
  54. i++;
  55. }
  56. while (k > 0)
  57. {
  58. c[j++] = d[k - 1];
  59. k--;
  60. }
  61. //计算后缀
  62. c[j] = '\0';
  63. i = 0;
  64. j = -1;
  65. while (c[i] != '\0')
  66. {
  67. if ((c[i] >= '0') && (c[i] <= '9'))
  68. {
  69. double x = 0;
  70. while ((c[i] >= '0') && (c[i] <= '9'))
  71. {
  72. x = 10 * x + c[i] - '0';
  73. i++;
  74. }
  75. j++;
  76. a[j] = x;
  77. }
  78. else
  79. {
  80. j--;
  81. switch (c[i])
  82. {
  83. case '+':
  84. {
  85. a[j] += a[j + 1];
  86. break;
  87. }
  88. case '-':
  89. {
  90. a[j] -= a[j + 1];
  91. break;
  92. }
  93. case '*':
  94. {
  95. a[j] *= a[j + 1];
  96. break;
  97. }
  98. case '/':
  99. {
  100. a[j] /= a[j + 1];
  101. break;
  102. }
  103. }
  104. }
  105. i++;
  106. }
  107. printf("%d", a[j]);
  108. return 0;
  109. }

线段树求区间和

5.2 bubble_sort

  1. #include<stdio.h>
  2. int i, j, k, n, m, s, t, a[300001], b[100001], c[100001];
  3. int min(int x, int y)
  4. {
  5. return x < y ? x : y;
  6. }
  7. int max(int x, int y)
  8. {
  9. return x > y ? x : y;
  10. }
  11. int p(int l, int r)
  12. {
  13. int s;
  14. s = 0;
  15. l += m - 1;
  16. r += m + 1;
  17. while ((l^r != 1) && (l != r))
  18. {
  19. if (l & 1 == 0) s += a[l ^ 1];
  20. if (r & 1 == 1) s += a[r ^ 1];
  21. l >>= 1;
  22. r >>= 1;
  23. }
  24. return s;
  25. }
  26. void q(int k)
  27. {
  28. k >>= 1;
  29. while (k > 1)
  30. {
  31. a[k] = a[k << 1] + a[(k << 1) + 1];
  32. k >>= 1;
  33. }
  34. }
  35. int main()
  36. {
  37. scanf("%d", &n);
  38. for (i = 1; i <= n; i++)
  39. scanf("%d", &b[i]);
  40. m = 1;
  41. while (m <= n) m <<= 1;
  42. for (i = m + 1; i <= m + n; i++)
  43. a[i] = 1;
  44. for (i = m - 1; i >= 1; i--)
  45. a[i] = a[i << 1] + a[(i << 1) + 1];
  46. for (i = 1; i <= n; i++)
  47. {
  48. t = p(1, b[i] - 1) + i;
  49. c[b[i]] = max(b[i], max(t, i)) - min(b[i], min(t, i));
  50. a[m + b[i]] = 0;
  51. q(m + b[i]);
  52. }
  53. printf("%d", c[1]);
  54. for (i = 2; i <= n; i++)
  55. printf(" %d", c[i]);
  56. return 0;
  57. }

AVL树(不包含删除操作)

8.1 wbhavl

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int i, j, k, n, m, s, t, a[100001];
  4. struct node
  5. {
  6. int dep;
  7. int val;
  8. node *p;
  9. node *l;
  10. node *r;
  11. };
  12. node* insert(node *tree, int value);
  13. void updata(node *tree);
  14. int depth(node *tree);
  15. node* aaaavl(node *tree, node *newp);
  16. int papa(node *tree);
  17. node* leftSingle(node *tree);
  18. node* rightSingle(node *tree);
  19. node* leftDouble(node *tree);
  20. node* rightDouble(node *tree);
  21. int haha(node *tree, int pp);
  22. node* insert(node *tree, int value)
  23. {
  24. node *newp, *nowp;
  25. newp = new node;
  26. newp->val = value;
  27. newp->p = NULL;
  28. newp->l = NULL;
  29. newp->r = NULL;
  30. if (tree == NULL)
  31. {
  32. newp->dep = 1;
  33. tree = newp;
  34. }
  35. else
  36. {
  37. nowp = tree;
  38. while (1 > 0)
  39. {
  40. if (newp->val <= nowp->val)
  41. {
  42. if (nowp->l == NULL)
  43. {
  44. nowp->l = newp;
  45. newp->p = nowp;
  46. break;
  47. }
  48. else
  49. {
  50. nowp = nowp->l;
  51. continue;
  52. }
  53. }
  54. else
  55. {
  56. if (nowp->r == NULL)
  57. {
  58. nowp->r = newp;
  59. newp->p = nowp;
  60. break;
  61. }
  62. else
  63. {
  64. nowp = nowp->r;
  65. continue;
  66. }
  67. }
  68. }
  69. updata(newp);
  70. tree = aaaavl(tree, newp);
  71. }
  72. return tree;
  73. }
  74. void updata(node *tree)
  75. {
  76. if (tree == NULL) return;
  77. else
  78. {
  79. int l, r;
  80. l = depth(tree->l);
  81. r = depth(tree->r);
  82. tree->dep = 1 + (l > r ? l : r);
  83. }
  84. }
  85. int depth(node *tree)
  86. {
  87. if (tree == NULL) return 0;
  88. else return tree->dep;
  89. }
  90. node* aaaavl(node *tree, node *newp)
  91. {
  92. int pa;
  93. while (newp != NULL)
  94. {
  95. updata(newp);
  96. pa = papa(newp);
  97. if ((pa < -1) || (pa > 1))
  98. {
  99. if (pa > 1)
  100. {
  101. if (papa(newp->r) > 0)
  102. {
  103. newp = leftSingle(newp);
  104. }
  105. else
  106. {
  107. newp = leftDouble(newp);
  108. }
  109. }
  110. if (pa < -1)
  111. {
  112. if (papa(newp->l) < 0)
  113. {
  114. newp = rightSingle(newp);
  115. }
  116. else
  117. {
  118. newp = rightDouble(newp);
  119. }
  120. }
  121. if (newp->p == NULL) tree = newp;
  122. break;
  123. }
  124. newp = newp->p;
  125. }
  126. return tree;
  127. }
  128. int papa(node *tree)
  129. {
  130. if (tree == NULL) return 0;
  131. else return depth(tree->r) - depth(tree->l);
  132. }
  133. node* leftSingle(node *tree)
  134. {
  135. node *newroot, *mature;
  136. mature = tree->p;
  137. newroot = tree->r;
  138. if (newroot->l != NULL)
  139. {
  140. newroot->l->p = tree;
  141. }
  142. tree->r = newroot->l;
  143. updata(tree);
  144. newroot->l = tree;
  145. newroot->p = mature;
  146. if (mature != NULL)
  147. {
  148. if (mature->l == tree)
  149. {
  150. mature->l = newroot;
  151. }
  152. else
  153. {
  154. mature->r = newroot;
  155. }
  156. }
  157. tree->p = newroot;
  158. updata(newroot);
  159. return newroot;
  160. }
  161. node* rightSingle(node *tree)
  162. {
  163. node *newroot, *mature, *naive;
  164. mature = tree->p;
  165. newroot = tree->l;
  166. if (newroot->r != NULL)
  167. {
  168. newroot->r->p = tree;
  169. }
  170. tree->l = newroot->r;
  171. updata(tree);
  172. newroot->r = tree;
  173. newroot->p = mature;
  174. if (mature != NULL)
  175. {
  176. if (mature->l == tree)
  177. {
  178. mature->l = newroot;
  179. }
  180. else
  181. {
  182. mature->r = newroot;
  183. }
  184. }
  185. tree->p = newroot;
  186. updata(newroot);
  187. return newroot;
  188. }
  189. node* leftDouble(node *tree)
  190. {
  191. rightSingle(tree->r);
  192. return leftSingle(tree);
  193. }
  194. node* rightDouble(node *tree)
  195. {
  196. leftSingle(tree->l);
  197. return rightSingle(tree);
  198. }
  199. int haha(node *tree, int pp)
  200. {
  201. node *nowp;
  202. int qq;
  203. qq = 1;
  204. nowp = tree;
  205. while (nowp)
  206. {
  207. if (nowp->val > pp)
  208. {
  209. nowp = nowp->l;
  210. qq++;
  211. }
  212. else
  213. {
  214. if (nowp->val < pp)
  215. {
  216. nowp = nowp->r;
  217. qq++;
  218. }
  219. else break;
  220. }
  221. }
  222. return qq;
  223. }
  224. int main()
  225. {
  226. node *tree, *now;
  227. int val;
  228. tree = NULL;
  229. scanf("%d", &n);
  230. for (i = 0; i < n; i++)
  231. {
  232. scanf("%d", &a[i]);
  233. tree = insert(tree, a[i]);
  234. }
  235. printf("%d", haha(tree, a[0]));
  236. for (i = 1; i < n; i++)
  237. printf(" %d", haha(tree, a[i]));
  238. return 0;
  239. }

k叉哈夫曼树(求合并n个数的最小代价)

也可用堆或优先队列

9.1 hbsz

  1. #include<stdio.h>
  2. #include<algorithm>
  3. using namespace std;
  4. int i, j, k, n, m, s, t, b[100002];
  5. short int a[100002];
  6. int main()
  7. {
  8. scanf("%d", &n);
  9. for (i = 0; i < n; i++)
  10. scanf("%d", &a[i]);
  11. sort(a, a + n);
  12. t = 0;
  13. i = 0;
  14. j = 0;
  15. s = 0;
  16. while (n - i + t - j > 1)
  17. {
  18. m = 0;
  19. for (k = 0; k < 2; k++)
  20. {
  21. if (i == n)
  22. {
  23. m += b[j];
  24. j++;
  25. }
  26. else
  27. if (j == t)
  28. {
  29. m += a[i];
  30. i++;
  31. }
  32. else
  33. if (a[i] < b[j])
  34. {
  35. m += a[i];
  36. i++;
  37. }
  38. else
  39. {
  40. m += b[j];
  41. j++;
  42. }
  43. }
  44. s += m;
  45. b[t] = m;
  46. t++;
  47. }
  48. printf("%d", s);
  49. return 0;
  50. }

并查集(求图的连通性)

10.2 friends

  1. #include<stdio.h>
  2. struct node
  3. {
  4. int x, y;
  5. };
  6. node e[50010];
  7. int i, j, k, n, m, s, t, x, y, d, l, a[50010], b[50010], f[50010], c[50010], p[50010], q[50010];
  8. int aaaa(int x)
  9. {
  10. return f[x] == x ? x : f[x] = aaaa(f[x]);
  11. }
  12. void qqq(int x)
  13. {
  14. int i, pp, qq;
  15. pp = aaaa(x);
  16. i = a[x];
  17. while (i != 0)
  18. {
  19. if (p[e[i].y])
  20. {
  21. qq = aaaa(e[i].y);
  22. if (pp != qq)
  23. {
  24. t--;
  25. f[qq] = pp;
  26. }
  27. }
  28. i = e[i].x;
  29. }
  30. }
  31. int main()
  32. {
  33. scanf("%d%d", &n, &m);
  34. for (i = 0; i < n; i++)
  35. {
  36. f[i] = i;
  37. }
  38. l = 0;
  39. for (i = 0; i < m; i++)
  40. {
  41. scanf("%d%d", &x, &y);
  42. l++;
  43. e[l].x = a[x];
  44. a[x] = l;
  45. e[l].y = y;
  46. l++;
  47. e[l].x = a[y];
  48. a[y] = l;
  49. e[l].y = x;
  50. }
  51. scanf("%d", &d);
  52. for (i = 1; i <= d; i++)
  53. {
  54. scanf("%d", &b[i]);
  55. c[b[i]] = 1;
  56. }
  57. t = 0;
  58. for (i = 0; i < n; i++)
  59. {
  60. if (!c[i])
  61. {
  62. t++;
  63. qqq(i);
  64. p[i] = 1;
  65. }
  66. }
  67. q[d + 1] = t;
  68. for (i = d; i >= 1; i--)
  69. {
  70. t++;
  71. qqq(b[i]);
  72. p[b[i]] = 1;
  73. q[i] = t;
  74. }
  75. for (i = 1; i <= d + 1; i++)
  76. {
  77. printf("%d\n", q[i]);
  78. }
  79. return 0;
  80. }

SPFA求负权环

11.1 CrazyScientist

  1. #include<stdio.h>
  2. int i, j, k, n, m, s, t, p, a[2010], b[80010][3], c[2010];
  3. bool d[2010];
  4. void q(int k)
  5. {
  6. int i, j;
  7. d[k] = true;
  8. i = a[k];
  9. while (i != 0)
  10. {
  11. j = b[i][0];
  12. if (c[k] + b[i][1] < c[j])
  13. {
  14. c[j] = c[k] + b[i][1];
  15. if ((d[j] == true) || (p == 1))
  16. {
  17. p = 1;
  18. if (d[s] == true)
  19. {
  20. t = 1;
  21. }
  22. break;
  23. }
  24. q(j);
  25. }
  26. i = b[i][2];
  27. }
  28. d[k] = false;
  29. }
  30. int main()
  31. {
  32. scanf("%d%d", &n, &m);
  33. for (i = 1; i <= n; i++)
  34. {
  35. a[i] = 0;
  36. c[i] = 0;
  37. d[i] = false;
  38. }
  39. s = 0;
  40. for (i = 1; i <= m; i++)
  41. {
  42. scanf("%d%d%d", &j, &k, &t);
  43. s++;
  44. b[s][0] = k;
  45. b[s][1] = t;
  46. b[s][2] = a[j];
  47. a[j] = s;
  48. }
  49. scanf("%d", &s);
  50. t = 0;
  51. for (i = 1; i <= n; i++)
  52. {
  53. p = 0;
  54. q(i);
  55. if (t == 1) break;
  56. }
  57. if (t == 1)
  58. printf("EL PSY CONGROO");
  59. else
  60. printf("ttt");
  61. return 0;
  62. }

SPFA求多源点最短路径(可直接作单源点用)

11.2 FuYihao

  1. #include<stdio.h>
  2. #include<string.h>
  3. int i, j, k, n, m, s, t, q, a[410][410] = { 0 }, b[410][410] = { 0 }, c[410], d[200010], e[410][410];
  4. bool f[410];
  5. void sasasa(int k)
  6. {
  7. int i, j, h, t;
  8. if (k > 1)
  9. {
  10. j = 1;
  11. for (i = 2; i < k; i++)
  12. if (e[i][k] < e[j][k]) j = i;
  13. for (i = 1; i <= n; i++)
  14. e[k][i] = e[j][k] + e[j][i];
  15. }
  16. e[k][k] = 0;
  17. f[k] = true;
  18. d[1] = k;
  19. h = 0;
  20. t = 1;
  21. while (h < t)
  22. {
  23. h++;
  24. j = d[h];
  25. f[j] = false;
  26. for (i = 1; i <= n; i++)
  27. {
  28. if (e[k][i] > e[k][j] + a[j][i])
  29. {
  30. e[k][i] = e[k][j] + a[j][i];
  31. if (f[i] == false)
  32. {
  33. t++;
  34. d[t] = i;
  35. f[i] = true;
  36. }
  37. }
  38. }
  39. }
  40. }
  41. int main()
  42. {
  43. memset(a, 0x3f, sizeof(a));
  44. memset(e, 0x3f, sizeof(e));
  45. scanf("%d%d", &n, &m);
  46. for (i = 0; i < m; i++)
  47. {
  48. scanf("%d%d%d", &j, &k, &t);
  49. if ((a[j][k] != 0) && (t > a[j][k])) continue;
  50. a[j][k] = t;
  51. a[k][j] = t;
  52. }
  53. scanf("%d", &q);
  54. for (i = 1; i <= n; i++)
  55. {
  56. memset(f, 0, sizeof(f));
  57. sasasa(i);
  58. }
  59. while (q--)
  60. {
  61. scanf("%d%d", &j, &k);
  62. if (e[j][k] != 0x3f3f3f3f)
  63. {
  64. if (q > 0) printf("%d\n", e[j][k]);
  65. else printf("%d", e[j][k]);
  66. }
  67. else
  68. {
  69. if (q > 0) printf("-1\n");
  70. else printf("-1");
  71. }
  72. }
  73. return 0;
  74. }

Dijkstra

直接手打的

  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. int i, j, k, n, m, s, t, x, y, a[100][100], b[100] = { 0 }, d[100];
  5. int main()
  6. {
  7. memset(a, 0x3f, sizeof(a));
  8. cin >> n >> m;
  9. for (i = 0; i < m; i++)
  10. {
  11. cin >> x >> y >> t;
  12. a[x - 1][y - 1] = t;
  13. a[y - 1][x - 1] = t;
  14. }
  15. cin >> x >> y;
  16. x--;
  17. y--;
  18. for (i = 0; i < n; i++)
  19. d[i] = a[x][i];
  20. b[x] = 1;
  21. d[x] = 0;
  22. for (i = 0; i < n - 1; i++)
  23. {
  24. t = 0x3f3f3f3f;
  25. k = -1;
  26. for (j = 0; j < n; j++)
  27. if ((b[j] == 0) && (d[j] < t))
  28. {
  29. k = j;
  30. t = d[j];
  31. }
  32. if (k == -1) break;
  33. b[k] = 1;
  34. for (j = 0; j < n; j++)
  35. if (d[k] + a[k][j] < d[j])
  36. d[j] = d[k] + a[k][j];
  37. }
  38. cout << d[y];
  39. return 0;
  40. }

Floyd

11.2 FuYihao

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. int i, j, k, n, m, s, t, a[410][410];
  6. int main()
  7. {
  8. memset(a, 0x3f, sizeof(a));
  9. cin >> n >> m;
  10. for (i = 1; i <= n; i++)
  11. a[i][i] = 0;
  12. for (i = 0; i < m; i++)
  13. {
  14. scanf("%d%d%d", &j, &k, &t);
  15. if (t < a[j][k])
  16. {
  17. a[j][k] = t;
  18. a[k][j] = t;
  19. }
  20. }
  21. for (k = 1; k <= n; k++)
  22. for (i = 1; i <= n; i++)
  23. for (j = 1; j <= n; j++)
  24. if (a[i][j] > a[i][k] + a[k][j])
  25. {
  26. a[i][j] = a[i][k] + a[k][j];
  27. }
  28. cin >> t;
  29. for (i = 0; i < t; i++)
  30. {
  31. cin >> j >> k;
  32. if (a[j][k] == 0x3f3f3f3f) printf("%d\n", -1);
  33. else printf("%d\n", a[j][k]);
  34. }
  35. return 0;
  36. }

Summary的更多相关文章

  1. Summary of Critical and Exploitable iOS Vulnerabilities in 2016

    Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...

  2. 三个不常用的HTML元素:<details>、<summary>、<dialog>

    前面的话 HTML5不仅新增了语义型区块级元素及表单类元素,也新增了一些其他的功能性元素,这些元素由于浏览器支持等各种原因,并没有被广泛使用 文档描述 <details>主要用于描述文档或 ...

  3. [LeetCode] Summary Ranges 总结区间

    Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...

  4. Network Basic Commands Summary

    Network Basic Commands Summary set or modify hostname a)     temporary ways hostname NEW_HOSTNAME, b ...

  5. Summary - SNMP Tutorial

    30.13 Summary Network management protocols allow a manager to monitor and control routers and hosts. ...

  6. Mac Brew Install Nginx Summary

    ==> Downloading https://homebrew.bintray.com/bottles/nginx-1.10.1.el_capitan.bot################# ...

  7. Leetcode: LFU Cache && Summary of various Sets: HashSet, TreeSet, LinkedHashSet

    Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the f ...

  8. How to add taxonomy element to a summary view?

    [re: Orchard CMS] This caused me scratching my head for days and now I can even feel it's bleeding. ...

  9. (转) Summary of NIPS 2016

    转自:http://blog.evjang.com/2017/01/nips2016.html           Eric Jang Technology, A.I., Careers       ...

  10. leetcode-【中等题】228. Summary Ranges

    题目: 228. Summary Ranges Given a sorted integer array without duplicates, return the summary of its r ...

随机推荐

  1. SpringCloud路由(网关)

    springcloud网关接口就类似于转发 搭建路由网关项目(ZuulDemo) 1.创建pom.xml <project xmlns="http://maven.apache.org ...

  2. React基础知识备忘

    section-1 //react组件 export class Halo extends React.Component{ constructor(...args){ super(...args); ...

  3. 1706: 神奇的编码(zzuli)

    题目描述 假如没有阿拉伯数字,我们要怎么表示数字呢 小明想了一个方法如下: 1 -> A 2 -> B 3 -> C .... 25 -> Y 26 -> Z 27 -& ...

  4. Linux基础实操三

    实操一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cd /etc -->tar passwd * group * > 1.txt 2) 将用户信 ...

  5. kali linux revealed mastering the penetration testing distribution

    1.本博客记载的是这本书的学习笔记,还有出现的一些不懂的单词 我也将会记载这篇博客中.记载顺序是按照本书的章节顺序来记载的.最喜欢本书中的一句   you havae no idea how good ...

  6. matlab提取wind底层数据库操作

    首先需要安装navicat for SQL server 软件, 为了实现Matlab 通过JDBC方式连接Sqlserver数据库, 需要安装Sqlserver JDBC驱动. 地址: https: ...

  7. SpringMVC + MyBatis + Mysql + Redis(作为二级缓存) 配置

    2016年03月03日 10:37:47 标签: mysql / redis / mybatis / spring mvc / spring 33805 项目环境: 在SpringMVC + MyBa ...

  8. 关于The specified Android SDK Build Tools version (26.0.2) is ignored, as it is below the minimum...

    今天将项目迁移到另一台笔记本,进行build出现以下问题,导致build失败 The specified Android SDK Build Tools version (26.0.2) is ign ...

  9. 用Photoshop扭曲滤镜工具打造旋转的光束效果

    原文:https://www.w3cschool.cn/photoshopgjjc/dthfn1.html 教程与已往的不同,作者加上了一些新的步骤如锐化等,出来的效果也有所改进.大致过程:先用滤镜制 ...

  10. javascript获取时间戳

    时间戳: 时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp). JavaScript 获取当前时间戳: < ...