`
java-mans
  • 浏览: 11435611 次
文章分类
社区版块
存档分类
最新评论

hdu 1596

 
阅读更多

水题~

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=1024;
struct zz
{
    int x;
    int y;
}zx[maxn];
 
float a[maxn][maxn];
float b[maxn][maxn];
bool vis[maxn];
int n,m,x,y,now;
float temp;
vector<int>g[maxn];
vector<int>v[maxn];
queue<int>q;
void build()
{
    for(int i=1;i<=n;i++)   
    {
        g[i].clear();
        v[i].clear();
        for(int j=1;j<=n;j++)
        {
            if(j==i)
            {
                continue;
            }
            if(a[i][j])
            {
                g[i].push_back(j);
            }
        }
    }
    return ;
}

void spfa(int x)
{
    while(!q.empty())
    {
        q.pop();
    }    
    memset(vis,false,sizeof(vis));
    vis[x]=true;
    q.push(x);
    a[x][x]=1.0;
    b[x][x]=1.0;
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        for(int i=0;i<g[now].size();i++)
        {
            temp=b[x][now]*a[now][g[now][i]];
            if(temp > b[x][g[now][i]])
            {
                b[x][g[now][i]]=temp;
                if(!vis[g[now][i]])
                {
                    vis[g[now][i]]=true;
                    q.push(g[now][i]);
                }               
            }   
        }    
        vis[now]=false;
    }
    return ;
}
 
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                b[i][j]=0;
                scanf("%f",&a[i][j]);
            }
        }
        build();
        scanf("%d",&m); 
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d",&zx[i].x,&zx[i].y);
            v[zx[i].x].push_back(zx[i].y);
        }
        for(int i=1;i<=n;i++)
        {
            if(v[i].size())
            {
                spfa(i);
            }
        }
        for(int i=1;i<=m;i++)
        {
            if(b[zx[i].x][zx[i].y])
            {
                printf("%.3f\n",b[zx[i].x][zx[i].y]);
            }   
            else
            {
                printf("What a pity!\n");
            }    
        }
    }    
    return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics