1 条题解
-
0
C++ :
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<iomanip> #define MAX 1000000 using namespace std; int n,x,y,tot=0,ans=0x7fffffff; int p[101]; int g[101][101]={0}; void in(); void out(); void flod(); void find(); int main() { //freopen("3.in","r",stdin); in(); flod(); find(); out(); return 0; } // void in() { cin>>n; n++; for (int i=1;i<n;i++) { g[i][i]=0; for (int j=1;j<n;j++) { if (i==j) { continue; } if (g[i][j]) { continue; } g[i][j]=MAX; } cin>>p[i]>>x>>y; if (x>0) { g[i][x]=g[x][i]=1; } if (y>0) { g[i][y]=g[y][i]=1; } } } // void flod() { for (int i=1;i<n;i++) { for (int j=1;j<n;j++) { if (j==i)// || g[i][j]==MAX { continue; } for (int k=1;k<n;k++) { /*if (g[k][j]==MAX) { continue; }*/ if ((k!=j) && (k!=i) && (g[i][j]+g[j][k]<g[i][k])) { g[i][k]=g[i][j]+g[j][k]; } } } } } // void find() { for (int i=1;i<n;i++) { tot=0; for (int j=1;j<n;j++) { if (g[i][j]==MAX) { continue; } tot+=g[i][j]*p[j]; } if (tot<ans) { ans=tot; } } } // void out() { cout<<ans<<endl; }
- 1
信息
- ID
- 1888
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者