POJ 1637 Sightseeing Tour
2010-11-26 17:00
274 查看
混合图判定是否存在欧拉回路,自己一开始就没想对,看了网上别人的思路
http://www.cnblogs.com/destinydesigner/archive/2009/09/28/1575674.html
代码:
http://www.cnblogs.com/destinydesigner/archive/2009/09/28/1575674.html
代码:
#include<iostream> using namespace std; #define inf 999999 #define MAX 205 #define min(x,y) (x)<(y)?(x):(y) int cap[MAX][MAX],f[MAX][MAX]; int pre[MAX],q[MAX],rc[MAX]; int indegree[MAX],outdegree[MAX]; int m,s,S,T,max_flow,sum; bool bfs() { int i,j,head=0,tail=1; memset(rc,0,sizeof(rc)); pre[S]=-1; rc[S]=inf; q[tail]=S; while(head<tail) { i=q[++head]; for(j=1;j<=T;j++) { if(cap[i][j]>f[i][j]&&!rc[j]) { rc[j]=min(rc[i],cap[i][j]-f[i][j]); pre[j]=i; q[++tail]=j; if(j==T) return true; } } } return false; } void update() { for(int i=T;i!=S;i=pre[i]) { f[pre[i]][i]+=rc[T]; f[i][pre[i]]=-f[pre[i]][i]; } max_flow+=rc[T]; } void EK() { while(bfs()) update(); } void construct() { int i,j; sum=0; /*for(i=1;i<=m;i++) for(j=i+1;j<=m;j++) { if(g[i][j]==0) { cap[i][j]=1; } }*/ for(i=1;i<=m;i++) { if(indegree[i]>outdegree[i]) { cap[i][T]=(indegree[i]-outdegree[i])/2; } else if(indegree[i]<outdegree[i]) { cap[S][i]=(outdegree[i]-indegree[i])/2; sum+=cap[S][i]; } } } int main() { int i,j,test,a,b,flag; cin>>test; while(test--) { memset(cap,0,sizeof(cap)); memset(f,0,sizeof(f)); memset(indegree,0,sizeof(indegree)); memset(outdegree,0,sizeof(outdegree)); scanf("%d %d",&m,&s); S=0; T=m+1; for(i=1;i<=s;i++) { scanf("%d%d%d",&a,&b,&j); indegree[b]++; outdegree[a]++; if(j==0) cap[a][b]++;//这里一开始直接赋值为1,wa了好几次 } flag=1; for(i=1;i<=m;i++) { if((indegree[i]-outdegree[i])%2==1) { flag=0; break; } } if(!flag) { printf("impossible/n"); continue; } construct(); max_flow=0; EK(); if(max_flow==sum) { printf("possible/n"); } else { printf("impossible/n"); } } return 0; }
相关文章推荐
- POJ 1637 Sightseeing tour(混合欧拉回路,网络流)
- POJ 1637 Sightseeing tour (欧拉路判定 网络流)
- [POJ 1637]Sightseeing tour[混合图欧拉回路]
- poj 1637 Sightseeing tour(混合图欧拉路径判定 最大流)
- POJ 1637 Sightseeing tour(最大流)
- POJ 1637:Sightseeing tour 混合图欧拉回路
- poj 1637 Sightseeing tour 混迹图欧拉回路
- POJ 1637 Sightseeing tour 混合欧拉回路
- poj 1637 Sightseeing tour
- poj 1637 Sightseeing tour 【网络流 求解混合欧拉回路是否存在】
- poj 1637 Sightseeing tour(混合图欧拉回路)
- POJ - 1637 Sightseeing tour (混合图欧拉路径欧拉图判断)
- POJ 1637 Sightseeing tour
- POJ 1637 Sightseeing tour
- poj 1637-Sightseeing tour解题报告
- POJ1637 Sightseeing tour (混合图欧拉回路)(网络流)
- 【最大流+混合图欧拉回路】POJ-1637 Sightseeing tour
- POJ 1637 Sightseeing tour ★混合图欧拉回路
- POJ1637 Sightseeing tour 混合图判断欧拉回路
- poj 1637 Sightseeing tour(混合欧拉回路)