BZOJ1601 Usaco2008 Oct 灌水
就一个最小生成树。
本蒟蒻还交了三次,最后才发现是数组开小了。。
不能再刷水题了。。。
Code:
#include <iostream> #include <cstdio> using namespace std; const long maxn=999999999; long pre[301]; long g[301][301]; int v[301]; int main(){ long n; cin >>n; pre[0]=0; for (int i=1;i<=n;i++){ cin >>g[0][i]; pre[i]=g[0][i]; v[i]=1; } for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++) cin >>g[i][j]; } long min,ans=0; pre[301]=maxn; for (int i=1;i<=n;i++){ min=301; for (int j=1;j<=n;j++){ if (v[j]){ min=(pre[j]<pre[min])?j:min; } } ans+=pre[min]; //cout <<min <<" " <<pre[min] <<endl; v[min]=0; for (int j=1;j<=n;j++){ pre[j]=(g[min][j]<pre[j])?g[min][j]:pre[j]; } } cout <<ans; //cin >>ans; return 0; }