50分C++代码,求解

P1546 [USACO3.1] 最短网络 Agri-Net

```cpp for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { cin>>d[(i-1)*4+j].c; d[(i-1)*4+j].a=i; d[(i-1)*4+j].b=j; } ``` 帅哥,这里的4都是n啊··· 改过后可以A
by dfzzl @ 2016-02-05 09:36:34


```cpp #include <iostream> using namespace std; bool flag[100]; int n, dist[100], w[100][100], ans = 0; void Prim(int vi) { int k = vi; for (int i = 0; i < n; i++) dist[i] = w[vi][i]; flag[vi] = true; for (int i = 0; i < n - 1; i++) { int min = 99999999; for(int j = 0; j < n; j++) if (dist[j] < min && !flag[j]) k = j, min = dist[j]; flag[k] = true; for (int j = 0; j < n; j++) if (dist[j] > w[k][j] && !flag[j]) dist[j] = w[k][j]; } } int main(int argc, char *argv[]) { cin >> n; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> w[i][j]; Prim(0); for (int i = 0; i < n; i++) ans += dist[i]; cout << ans; return 0; } ```
by 这我也是醉了 @ 2016-12-14 20:09:11


|