BZOJF2306 [Ctsc2011]幸福路径

来源:互联网 发布:ps4 神之浩劫网络差 编辑:程序博客网 时间:2024/06/05 07:10

你幸福吗?

我姓姜

这题为什么会出在ctsc里啊

走太长之后就没贡献了

倍增floyd跑跑

#include<iostream>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<cstdlib>#include<cstdio>#include<map>#include<bitset>#include<set>#include<stack>#include<vector>#include<queue>using namespace std;#define MAXN 110#define MAXM 1010#define MAXS 100010#define ll long long#define eps 1e-8#define MOD 1000000007#define INF 1000000000int n,m;double ans;double p;int s;double a[MAXN];double f[MAXN][MAXN];double g[MAXN][MAXN];int main(){int i,j,k,x,y;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%lf",&a[i]);}scanf("%d%lf",&s,&p);for(i=1;i<=n;i++){for(j=1;j<=n;j++){f[i][j]=-1e60;}}for(i=1;i<=n;i++){f[i][i]=0;}for(i=1;i<=m;i++){scanf("%d%d",&x,&y);f[x][y]=a[y];}double tp=p;for(x=1;x<=30;x++){for(i=1;i<=n;i++){for(j=1;j<=n;j++){g[i][j]=-1e60;}}for(k=1;k<=n;k++){for(i=1;i<=n;i++){for(j=1;j<=n;j++){g[i][j]=max(g[i][j],f[i][k]+f[k][j]*p);}}}p*=p;memcpy(f,g,sizeof(f));}for(i=1;i<=n;i++){ans=max(ans,f[s][i]*tp+a[s]);}printf("%.1lf\n",ans);return 0;}/*5 510.0 8.0 8.0 8.0 15.010.51 22 33 44 24 5*/


0 0
原创粉丝点击