cin不T快读T?

P3376 【模板】网络最大流

dulox @ 2023-11-16 17:58:16

cin不T快读T?

快读前6个点T后6个点不T ??

cin


by dulox @ 2023-11-16 18:03:33

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;

const int MAXN=210;
const int MAXM=5010*2;
struct edge{
    int nextp;
    long long v;
    int to;
}e[MAXM];
int eid=2;
int head[MAXN];
int posi[MAXM];
long long vis[MAXN];
long long ans=0;
int n,m,s,t;
void add(int v,int w,long long yi){
    edge ret;
    ret.to=w;
    ret.v=yi;
    ret.nextp=head[v];
    head[v]=eid;
    e[eid]=ret;
    eid++;
    return;
}

long long read(){
    char kl=getchar();
    int f=1;
    while(kl>'9'||kl<'0'){
        if(kl=='-'){
            f=-1;
        }
    }
    long long ret=0;
    while(kl>='0'&&kl<='9'){
        ret=ret*10+kl-'0';
        kl=getchar();
    }
    return f*ret;
}

bool bfs(int x){
    memset(vis,0,sizeof(vis));
    vis[x]=0x3f3f3f3f;
    queue<int>stt;
    stt.push(x);
    while(!stt.empty()){
        int topx=stt.front();
        stt.pop();
        for(int i=head[topx];i!=0;i=e[i].nextp){
            int topt=e[i].to;
            long long topv=e[i].v;
            if(vis[topt]==0&&topv>0){
                vis[topt]=min(vis[topx],topv);
                posi[topt]=i;
                stt.push(topt);
                if(topt==t){
                    return true;
                }
            }   
        }
    } 
    return false;
}

int main(){
    n=read(),m=read(),s=read(),t=read();
    for(int i=0;i<m;i++){
        int vi=read(),wi=read(),ki=read();
        add(vi,wi,ki);
        add(wi,vi,0);
    }
    while(bfs(s)){
        int stp=t,changev=vis[t];
        while(stp!=s){
            int way=posi[stp];
            e[way].v-=changev;
            e[way^1].v+=changev;
            stp=e[way^1].to;
        }
        ans+=changev;
    }
    printf("%lld",ans);
    return 0;
} 

by 小小蒲公英 @ 2023-11-16 18:04:42

是不是这里没加kl=getchar()?

while(kl>'9'||kl<'0'){
        if(kl=='-'){
            f=-1;
        }
    }

by 小小蒲公英 @ 2023-11-16 18:06:26

@dulox


by dulox @ 2023-11-16 18:07:10

好吧是的。。。


by dulox @ 2023-11-16 18:07:35

谢谢大佬


by Terrible @ 2023-11-16 18:17:26

@dulox 你这个读入也不快啊?为什么叫快读?

和开 O2 关同步流的 cin 比一比。


by fangzichang @ 2023-11-16 18:26:28

@Terrible getchar 在洛谷评测机上很快。我自己测的时候直接 getchar 就比关同步 cin 快,getchar_unlockedfread 还快。
参见


by Sprague_Garundy @ 2023-11-16 18:29:10

@Terrible 所以你认为用 fread 的才叫快读吗(


by Terrible @ 2023-11-16 20:57:15

①我的错,别和 std::cɪn 比了,洛谷上大规模数据测评确实能差出来很多。(我很久之前测过也是这个结果,不过我后面好像看到 std::cɪn 能和这玩意速度齐平?玄学,离谱。)

②依然对“快读”名称存疑,read() 函数是优化读入没有问题(优化不一定快),但是它最大的特征也不是“快”,称为 getchar()模拟读入函数是更贴切的。

③优化读入在本题意义真的微乎其微,数据量就没多少。这种情况没必要整 read(),随便用个读入就行了。


|