上交模板過不了,改了好久,還是過不了,嘛嘛,改了一周了,實在不知道哪裡錯了,果斷還是自己寫一個算了……
混合圖歐拉回路就是在圖中,有些邊是有向的有些邊是無向的,然後判斷有沒有歐拉回程。
#include #include #include #include #include #include #include #include #include #include #include #include #include #define PI acos(-1.0) #define mem(a,b) memset(a,b,sizeof(a)) #define sca(a) scanf("%d",&a) #define sc(a,b) scanf("%d%d",&a,&b) #define pri(a) printf("%d\n",a) #define lson i<<1,l,mid #define rson i<<1|1,mid+1,r #define MM 100005 #define MN 500 #define INF 0x7fffffff #define eps 1e-7 using namespace std; typedef long long ll; struct edge { int v,w,next; } e[MM]; int head[MN],in[MN],vis[MN],node[MM][3],cnt; void add(int u,int v,int w) { e[cnt].v=v,e[cnt].w=w,e[cnt].next=head[u],head[u]=cnt++; e[cnt].v=u,e[cnt].w=0,e[cnt].next=head[v],head[v]=cnt++; } bool bfs(int st,int en) { mem(vis,0); queueq; q.push(st); vis[st]=1; while(!q.empty()) { int u=q.front(); q.pop(); if(u==en) return true; for(int i=head[u]; i>=0; i=e[i].next) { int v=e[i].v; if(e[i].w && vis[v]==0) { vis[v]=vis[u]+1; q.push(v); } } } return false; } int dfs(int u,int flow,int en) { if(u==en) return flow; int sum=0; for(int i=head[u]; i>=0 && sum0 && vis[v]==vis[u]+1) { int tmp=dfs(v,min(flow-sum,e[i].w),en); e[i].w-=tmp; e[i^1].w+=tmp; sum+=tmp; } } if(!sum) vis[u]=0; return sum; } int dinic(int st,int en) { int ans=0,tmp; while(bfs(st,en)) { while(tmp=dfs(st,INF,en)) ans+=tmp; } return ans; } bool solve(int n,int m) //n為點數,m為邊數 { int i,sum=0; memset(head,-1,sizeof(head)); mem(in,0); cnt=0; for(i=0;i>1); if(in[i]>0) add(i,n+1,in[i]>>1),sum+=(in[i]>>1); } if(sum==dinic(0,n+1)) return true; //存在歐拉回路 return false; } int main() { int t,n,m,i; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i
hdu3015 Disharmony Trees Pro
acdream 1738 世風日下的嘩啦啦族I,acdrea
191 Number of 1 Bits,191bits最近
DisplayMemberPath 是用來顯
好久沒有更新博客了,今天臨時起意,將以前寫的示例代碼整
小豬豬逆襲成博士之C++基礎篇(一)數據精度、強制類型轉換、