码迷,mamicode.com
首页 > 其他好文 > 详细

P1396 营救

时间:2020-01-17 13:30:33      阅读:513      评论:0      收藏:0      [点我收藏+]

标签:pen   color   一个   splay   ++   com   memset   ide   int   

链接:Miku

------------------------

一道很贴切的题目

------------------------

这道题可以用各种修改后的图论算法等,不过单单是二分答案也是可以解决的。

检查一下对于每一个最大值,不走所有比此值大的路,看一下能不能走到终点即可

---------------------------

技术图片
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,s,t;
int he[100001];
int p;
int vis[100001];
struct b{
    int v;
    int ne;
    int to;
}e[200001];
int x,y,z;
void add(int f,int t,int v){
    p++;
    e[p].v=v;
    e[p].to=t;
    e[p].ne=he[f];
    he[f]=p;
}
void dfs(int now,int k){
    if(vis[now])
    return ;
    vis[now]=1;
    for(int i=he[now];i;i=e[i].ne){
        if(e[i].v<=k)
            dfs(e[i].to,k);
    }
}
bool check(int k){
    memset(vis,0,sizeof(vis));
    dfs(s,k);
    if(vis[t])
    return 1;
    else
    return 0;
}
int main(){
    scanf("%d%d%d%d",&n,&m,&s,&t);
    for(int i=1;i<=m;++i){
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z);
        add(y,x,z);
    }
    int l=1,r=1000000;
    while(l<=r){
        int mid=l+(r-l)/2;
        if(check(mid)) r=mid-1;
        else
        l=mid+1;
    }
    cout<<l;
    return 0;
}
Ac

P1396 营救

标签:pen   color   一个   splay   ++   com   memset   ide   int   

原文地址:https://www.cnblogs.com/For-Miku/p/12205210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!