• poj1125 Stockbroker Grapevine


    数据貌似很水的样子。用了N次Dijkstra来计算每点到其他各点距离的最大值,时间复杂度还是蛮大的,结果也是0ms。

    英语不好伤不起啊,题目看了好久才知道在干嘛。

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<queue>
    #include<vector>
    #define MAXD 110
    #define INF 0x3f3f3f3f
    using namespace std;
    int N,data[MAXD][MAXD],d[MAXD];
    bool graph[MAXD][MAXD];
    
    class cmp
    {
        public:
        bool operator()(int a,int b)
        {
            return d[a]>d[b];
        }
    };
    
    void Dijkstra(int src)
    {
        priority_queue<int,vector<int>,cmp > que;
        bool vis[MAXD];
        memset(vis,0,sizeof(vis));
        memset(d,0x3f,sizeof(d));
        d[src]=0;
        que.push(src);
        int t;
        int i;
        while(!que.empty())
        {
            t=que.top();
            vis[t]=true;
            que.pop();
            for(i=1;i<=N;i++)
            {
                if(!vis[i]&&graph[t][i]&&d[i]>d[t]+data[t][i])
                {
                    d[i]=d[t]+data[t][i];
                    que.push(i);
                }
            }
        }
    }
    
    int max()
    {
        int i,ans=0;
        for(i=1;i<=N;i++)
        {
            if(ans<d[i])
            ans=d[i];
        }
        return ans;
    }
    int main()
    {
        //freopen("test.txt","r",stdin);
        while(scanf("%d",&N)!=EOF)
        {
            if(N==0)
            return 0;
            int i,j,m,t;
            memset(graph,0,sizeof(graph));
            for(i=1;i<=N;i++)
            {
                scanf("%d",&m);
                for(j=1;j<=m;j++)
                {
                    scanf("%d",&t);
                    scanf("%d",&data[i][t]);
                    graph[i][t]=true;
                }
            }
            int flag=0,ans=INF;
            for(i=1;i<=N;i++)
            {
                Dijkstra(i);
                if(ans>max())
                {
                    ans=max();
                    flag=i;
                }
            }
            if(flag==0)
            printf("disjoint\n");
            else
            printf("%d %d\n",flag,ans);
        }
        return 0;
    }
  • 相关阅读:
    Java常见问题汇总
    前端url参数中带有callback并产生错误
    shiro中ecache-core版本引起的异常
    深入SpringMVC注解
    导出表格数据到excel并下载(HSSFWorkbook版)
    layui数据表格及分页
    签名的生成
    程序的健壮性Robustness
    ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
    生成二维码功能
  • 原文地址:https://www.cnblogs.com/longlongagocsu/p/2831695.html
Copyright © 2020-2023  润新知