|
没用状压的WA代码(能过部分点)
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <map>
- #include <cstdlib>
- #include <algorithm>
- #include <queue>
- #include <stack>
- using namespace std;
- int f[20][20],a[20],pri[20][20],book[20][20][20],n,m,k,x,y,p,ans=-0x3f3f3f3f;
- int main()
- {
- scanf("%d%d%d",&n,&m,&k);
- for(int i=1;i<=n;i++)
- scanf("%d",&a[i]);
- for(int i=1;i<=k;i++)
- {
- scanf("%d%d%d",&x,&y,&p);
- pri[x][y]=p;
- }
- for(int i=1;i<=n;i++)
- f[1][i]=a[i],book[1][i][i]=1;
- for(int i=2;i<=m;i++)
- for(int j=1;j<=n;j++)
- for(int k=1;k<=n;k++)
- if(!book[i-1][j][k])
- if(f[i][k]<f[i-1][j]+pri[j][k]+a[k])
- {
- for(int l=1;l<=n;l++)
- book[i][k][l]=book[i-1][j][l];
- book[i][k][k]=1;
- f[i][k]=f[i-1][j]+pri[j][k]+a[k];
- }
- for(int i=1;i<=n;i++)
- ans=max(ans,f[m][i]);
- printf("%d",ans);
- return 0;
- }
复制代码
|
|