标签:
水题,Dijkstra
#include<iostream> #include<cstdio> #define maxn 1010 using namespace std; int n,sx,sy; double vaule[maxn][maxn]; int visit[maxn]; void init() { } void input() { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) scanf("%lf",&vaule[i][j]); } } void dj() { double d[maxn]; fill(d,d+1+n,0); fill(visit,visit+1+n,0); d[sx]=1; while(!visit[sy]) { int v=-1; for(int i=1;i<=n;i++) { if(!visit[i]&&(v==-1||d[i]>d[v])) v=i; } if(v==-1||d[v]==0) { cout<<"What a pity!"<<endl; return; } visit[v]=1; for(int i=1;i<=n;i++) { d[i]=max(d[i],d[v]*vaule[v][i]); } } //cout<<d[sy]<<endl; printf("%.3f\n",d[sy]); } void solve() { int m; scanf("%d",&m); for(int i=0;i<m;i++) { scanf("%d%d",&sx,&sy); dj(); } } int main() { while(scanf("%d",&n)!=EOF) { init(); input(); solve(); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/zafkiel_nightmare/article/details/48029693