• bzoj 1415: [Noi2005]聪聪和可可


    直接上记忆化搜索

    #include<queue>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int read_p,read_ca;
    inline int read(){
        read_p=0;read_ca=getchar();
        while(read_ca<'0'||read_ca>'9') read_ca=getchar();
        while(read_ca>='0'&&read_ca<='9') read_p=read_p*10+read_ca-48,read_ca=getchar();
        return read_p;
    }
    struct na{
        int y,ne;
    }b[10001];
    queue <int> q;
    int a,bb;
    int n,m,l[3001],r[3001],ru[3001],num=0;
    int ne[1001][1001],dis[1001][1001];
    double jy[1001][1001];
    bool bo[1001][1001];
    const int INF=1e9;
    inline void add(int x,int y){
        num++;
        if (!l[x]) l[x]=num;else b[r[x]].ne=num;
        b[num].y=y;r[x]=num;
    }
    inline void bfs(int x){
        for (int i=1;i<=n;i++) dis[x][i]=INF;
        dis[x][x]=0;ne[x][x]=x;
        for (int i=l[x];i;i=b[i].ne) dis[x][b[i].y]=1,ne[x][b[i].y]=b[i].y,q.push(b[i].y);
        while (!q.empty()){
            int k=q.front();q.pop();
            for (int i=l[k];i;i=b[i].ne)
            if (dis[x][b[i].y]>dis[x][k]+1) dis[x][b[i].y]=dis[x][k]+1,ne[x][b[i].y]=ne[x][k],q.push(b[i].y);else
            if (dis[x][b[i].y]==dis[x][k]+1&&ne[x][b[i].y]>ne[x][k]) ne[x][b[i].y]=ne[x][k],q.push(b[i].y);
        }
    }
    inline double dfs(int a,int bb){
        if (a==bb) return 0.0;
        if (bo[a][bb]) return jy[a][bb];
        bo[a][bb]=1;
        double ans=0.0;
        int aa=ne[ne[a][bb]][bb];
        if (aa==bb) return jy[a][bb]=1.0;
        int u=1;
        for (int i=l[bb];i;i=b[i].ne) ans+=dfs(aa,b[i].y),u++;
        ans+=dfs(aa,bb);
        ans=1.0/u*ans+1.0;
        return jy[a][bb]=ans;
    }
    int main(){
        int i,j,x,y;
        n=read();m=read();
        a=read();bb=read();
        for (i=1;i<=m;i++) x=read(),y=read(),add(x,y),add(y,x);
        for (int i=1;i<=n;i++) bfs(i);
        printf("%.3lf
    ",dfs(a,bb));
        return 0;
    }
    View Code
  • 相关阅读:
    一个漂亮的lazarus做的pagecontrol
    预测,阿里盒子必将失败!
    sex在软件开发中的运用--SIX技术
    糟糕的@@identity,SCOPE_IDENTITY ,IDENT_CURRENT
    Delphi、Lazarus保留字、关键字详解
    糟糕的界面设计
    Firebird存储过程--更加人性化的设计
    lazarus的动态方法和虚拟方法
    用户行为导向的交互设计
    Javascript的一个怪现象
  • 原文地址:https://www.cnblogs.com/Enceladus/p/5346416.html
Copyright © 2020-2023  润新知