zoukankan      html  css  js  c++  java
  • poj 2455 Secret Milking Machine

    题意:有N个点,之间有P条路(双向),要求每次从1到N走不同的路T次,求这T次中两点间路最长的一条

    思路:二分+最大流,如果两点之间有路,就建立流量为1的网络,然后二分路径长度,从新建立符合要求的图,求最大流

    注意重边的情况,如果是邻接表没事,否则注意,边不是取最小,要都存下,因为有可能都符合要求,WA了很多次都是错在这了

    三个小时就这么没了……今天一早,看出了原因了,于是用vector解决了,明显很慢啊,不知道是不是模板的原因……

    核心code:

    vector<int>  map[nMax][nMax];  //原始图

    void rebuild(int mid)
    {
    memset(G, 0, sizeof(G));
    memset(F, 0, sizeof(F));  //
    for(int i=1; i<=n; i++)
    for(int j=1; j<=n; j++)
    {
    int tt=map[i][j].size();
    for(int t=0; t<tt; t++)
    if(map[i][j][t]<=mid)
    G[i][j]+=1;  //重建的网络
    }
    }

    int main()
    {
    scanf("%d%d%d", &n, &m, &t);
    source=1;  //源点
    sink=n;    //汇点
    int x, y, dist;
    for(int i=1; i<=m; i++)
    {
    scanf("%d%d%d", &x, &y, &dist);
    map[x][y].push_back(dist);
    map[y][x].push_back(dist);
    Max=max(Max, dist);
    Min=min(Min, dist);
    }
    int mid,flow;
    while(Max > Min)
    {
    mid=(Max+Min)/2;
    rebuild(mid);
    //cout<<ans<<" ";
    flow=find_max_flow();
    if(flow>=t)
    Max=mid;
    else
    Min=mid+1;
    }
    printf("%d\n", Max);
    return 0;
    }
  • 相关阅读:
    添加远程库
    远程仓库
    删除url中某个参数
    html2canvas.js——HTML转Canvas工具
    vue-cli3与vue-cli2的区别和vue-cli 怎么修改配置
    vue打包后出现一些map文件的解决方法
    微信app右上角自带分享功能
    微信授权获取用户openId的方法和步骤
    支付宝小程序webview里的h5跳转回小程序
    new Date
  • 原文地址:https://www.cnblogs.com/FreeAquar/p/2144149.html
Copyright © 2011-2022 走看看