• poj 1125 Stockbroker Grapevine (dij优化 0ms)


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    #define maxn 110
    #define pa pair<int,int>
    using namespace std;
    int n,num,head[maxn],dis[maxn],ans,len=0x7fffffff,f[maxn];
    struct node
    {
        int u,v,t,pre;
    }e[maxn*maxn];
    void Add(int from,int to,int dis)
    {
        num++;
        e[num].v=to;
        e[num].u=from;
        e[num].t=dis;
        e[num].pre=head[from];
        head[from]=num;
    }
    void Dij(int s)
    {
        priority_queue<pa,vector<pa>,greater<pa> >q;
        q.push(make_pair(0,s));
        dis[s]=0;
        while(!q.empty())
          {
              int k=q.top().second;
              q.pop();
              if(f[k])continue;
              f[k]=1;
              for(int i=head[k];i;i=e[i].pre)
                if(dis[e[i].v]>dis[k]+e[i].t)
                  {
                    dis[e[i].v]=dis[k]+e[i].t;
                    q.push(make_pair(dis[e[i].v],e[i].v));
                }
          }
    }
    int main()
    {
        while(1)
        {
            scanf("%d",&n);
            if(n==0)break;
            num=0;ans=0;len=0x7fffffff;
            memset(head,0,sizeof(head));
            int x,y,z;
            for(int i=1;i<=n;i++)
              {
                  scanf("%d%",&x);
                  for(int j=1;j<=x;j++)
                    {
                        scanf("%d%d",&y,&z);
                        Add(i,y,z);
                  }
              } 
            for(int i=1;i<=n;i++)
              {
                  memset(dis,127/3,sizeof(dis));
                  memset(f,0,sizeof(f));
                  Dij(i);
                  int falg=0,maxx=0;
                  for(int j=1;j<=n;j++)
                    {
                        if(dis[i]>100000)falg=1;
                       maxx=max(maxx,dis[j]);
                  }
                if(falg==1)continue;
                 else 
                   {
                       if(len>maxx)
                         {
                             len=maxx;
                              ans=i;
                      }
                  }
              }
            if(ans)printf("%d %d
    ",ans,len);
            else printf("disjoint
    ");
        }
    }
  • 相关阅读:
    uniapp 环境变量
    vue 生命周期
    浏览器的工作原理
    monent
    维基百科
    vue 生命周期(二) uniapp
    二进制安装K8S kubctl get node 返回No resources found
    k8s master节点高可用 nginx+keepalived配置文件
    elesticsearch启动
    qt多线程内存崩溃
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5482404.html
Copyright © 2020-2023  润新知