作业。。
1 A: 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 8 const int maxn = 105; 9 struct Node { 10 int a, b; 11 int val; 12 }node[maxn * maxn]; 13 14 bool cmp(Node n1, Node n2) { 15 return n1.val < n2.val; 16 } 17 18 int fa[maxn]; 19 void init(int x) { 20 for(int i = 0; i <= x; i++) { 21 fa[i] = i; 22 } 23 } 24 25 int find(int x) { 26 if(fa[x] == x) { 27 return fa[x]; 28 } 29 return fa[x] = find(fa[x]); 30 } 31 32 int sum; 33 void unin(int x, int y, int z) { 34 int fx = find(x), fy = find(y); 35 if(fx != fy) { 36 sum += z; 37 fa[fx] = fy; 38 } 39 } 40 41 int main() { 42 int n, m; 43 while(EOF != scanf("%d %d",&n, &m) ) { 44 init(n); 45 for(int i = 0; i < m; i++){ 46 scanf("%d %d %d",&node[i].a, &node[i].b, &node[i].val); 47 } 48 sort(node, node + m, cmp); 49 sum = 0; 50 for(int i = 0; i < m; i++) { 51 unin(node[i].a, node[i].b, node[i].val); 52 } 53 printf("%d\n", sum); 54 } 55 return 0; 56 } 57 58 59 B: 60 #include <iostream> 61 #include <cstdio> 62 #include <cstring> 63 using namespace std; 64 65 const int maxn = 105; 66 int mat[maxn][maxn]; 67 68 int main() { 69 int n, m; 70 int u, v, w; 71 while(EOF != scanf("%d %d",&n, &m) ) { 72 memset(mat, 0x3f, sizeof(mat)); 73 for(int i = 1; i <= m; i++) { 74 scanf("%d %d %d",&u, &v, &w); 75 mat[u][v] = min(mat[u][v], w); 76 mat[v][u] = mat[u][v]; 77 } 78 for(int k = 1; k <= n; k++) { 79 for(int i = 1; i <= n; i++) { 80 for(int j = 1; j <= n; j++) { 81 if(k == i || k == j) continue; 82 if(mat[i][j] > mat[i][k] + mat[k][j]) { 83 mat[i][j] = mat[i][k] + mat[k][j]; 84 } 85 } 86 } 87 } 88 printf("%d\n", mat[1][n]); 89 } 90 return 0; 91 } 92 93 94 C: 95 #include <iostream> 96 #include <cstdio> 97 #include <cstring> 98 using namespace std; 99 100 const int maxn = 1030; 101 int a[maxn]; 102 int n; 103 104 void pr(int x) { 105 if(x > n) return ; 106 printf("%d ", x); 107 pr(x << 1); 108 pr(x << 1 | 1); 109 } 110 int main() { 111 while(EOF != scanf("%d",&n) ) { 112 for(int i = 1; i <= n; i++) { 113 a[i] = i; 114 } 115 pr(1); puts(""); 116 } 117 return 0; 118 } 119 120 121 D: 122 #include <iostream> 123 #include <cstdio> 124 #include <cstring> 125 using namespace std; 126 127 const int maxn = 1030; 128 int a[maxn]; 129 int n; 130 131 void pr(int x) { 132 if(x > n) return ; 133 pr(x << 1); 134 printf("%d ", x); 135 pr(x << 1 | 1); 136 } 137 int main() { 138 while(EOF != scanf("%d",&n) ) { 139 for(int i = 1; i <= n; i++) { 140 a[i] = i; 141 } 142 pr(1); puts(""); 143 } 144 return 0; 145 } 146 147 148 149 E: 150 #include <iostream> 151 #include <cstdio> 152 #include <cstring> 153 using namespace std; 154 155 const int maxn = 1030; 156 int a[maxn]; 157 int n; 158 159 void pr(int x) { 160 if(x > n) return ; 161 pr(x << 1); 162 pr(x << 1 | 1); 163 printf("%d ", x); 164 } 165 int main() { 166 while(EOF != scanf("%d",&n) ) { 167 for(int i = 1; i <= n; i++) { 168 a[i] = i; 169 } 170 pr(1); puts(""); 171 } 172 return 0; 173 }