欧拉回路——洛谷 P1333 瑞瑞的木棍

来源:互联网 发布:情趣内衣淘宝 编辑:程序博客网 时间:2024/05/19 06:34

https://www.luogu.org/problem/show?pid=1333#sub
我靠,就是标准的欧拉回路嘛;
在多加一个判断是否联通;
但是直接map会超时,然后标算是字典树hush;
然后c++11有一个unordered_map
跑的飞快我靠;
stl大法好啊;
关于unordered_map大家自行百度吧

#include<bits/stdc++.h>#define Ll long longusing namespace std;unordered_map<string,int>F;struct cs{int to,nxt;}a[5000005];char s[11],ss[11];int head[500005],lll;int A[500005],ll;bool vi[500005];int x,y,sum,n;void init(int x,int y){    a[++lll].to=y;    a[lll].nxt=head[x];    head[x]=lll;}void dfs(int x){    vi[x]=1;n++;    for(int k=head[x];k;k=a[k].nxt)        if(!vi[a[k].to])dfs(a[k].to);}int main(){    while(scanf("%s %s",s,ss)!=-1){        if(!F[ s])x=F[s ]=++ll;else x=F[s ];        if(!F[ss])y=F[ss]=++ll;else y=F[ss];        A[x]++;A[y]++;init(x,y);init(y,x);    }    dfs(1);    if(n<ll){printf("Impossible");exit(0);}    for(int i=1;i<=250000;i++)if(A[i]&1)sum++;    if(sum!=0&&sum!=2)printf("Impossible");else printf("Possible");}
原创粉丝点击