HDU 4598 Difference
来源:互联网 发布:python中的单例模式 编辑:程序博客网 时间:2024/06/05 15:21
由|ai| < T for all i and ,(vi, vj) in E <=> |ai - aj| >= T,可知,相邻的边都是一正一负,dfs判断是否成立
差分约束判断是否有解,根据(vi, vj) in E <=> |ai - aj| >= T得,map[i][j]=0,|ai-aj|<T,map[i][j]=1,|ai-aj||>=T;|ai|<T,建图求解
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<queue>#define N 305#define M 90005#define INF 1<<29using namespace std;int map[N][N],cnt,head[N],vis[N],index[N],n,dis[N],mark[N];struct edge{ int v,next,w;}e[M];void init(){ memset(head,-1,sizeof(head)); memset(index,0,sizeof(index)); for(int i=1;i<=n;i++) dis[i]=INF; cnt=0; memset(vis,0,sizeof(vis));}void addedge(int u,int v,int w){ e[cnt].v=v;e[cnt].w=w;e[cnt].next=head[u];head[u]=cnt++;}bool SPFA(int u){ queue<int> q; int i,v,w; q.push(u); dis[u]=0; while(!q.empty()){ u=q.front(); q.pop(); vis[u]=0; for(i=head[u];i!=-1;i=e[i].next){ v=e[i].v; w=e[i].w; if(dis[u]+w<dis[v]){ dis[v]=dis[u]+w; if(!vis[v]){ vis[v]=1; q.push(v); if(++index[v]>n) return false; } } } } return true;}bool judge(int u){ for(int i=1;i<=n;i++){ if(map[u][i]){ if(mark[i]==-1){ mark[i]=1-mark[u]; if(!judge(i)) return false; }else { if(mark[i]==mark[u]) return false; } } } return true;}int main(){ int i,j,t; char str[N]; scanf("%d",&t); while(t--){ scanf("%d",&n); init(); memset(mark,-1,sizeof(mark)); for(i=1;i<=n;i++){ scanf("%s",str); for(j=1;j<=n;j++){ map[i][j]=str[j-1]-'0'; } } mark[1]=0; if(!judge(1)){ printf("No\n"); continue; } for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(map[i][j]==1){ if(mark[i]) addedge(i,j,-N); else addedge(j,i,-N); }else { if(mark[i]) addedge(i,j,N-1); else addedge(j,i,N-1); } } } for(i=1;i<=n;i++){ addedge(0,i,N-1); } if(SPFA(0)){ printf("Yes\n"); }else { printf("No\n"); } } return 0;}
0 0
- hdu 4598 Difference
- HDU 4598 Difference
- HDU 4598 Difference 差分约束 + 判奇圈
- hdu 4161 Iterated Difference
- HDU 4161 Iterated Difference
- hdu 5936 Difference 二分
- hdu 4598 Difference(奇圈判定+差分约束)
- hdu 4598 Difference(spfa+差分约束,4级)
- HDU 4161(Iterated Difference )
- hdu 4715(Difference Between Primes)
- hdu 4715 Difference Between Primes
- hdu 4715Difference Between Primes
- hdu 4715 Difference Between Primes
- HDU 4715 Difference Between Primes
- HDU 4229 Vive la Difference!
- HDU 4715 Difference Between Primes
- hdu 4715 Difference Between Primes
- hdu 5486 Difference of Clustering
- Pat(Advanced Level)Practice--1049(Counting Ones)
- hadoop异常java heap space
- winform程序中那些你不注意会被坑的奇葩们。。
- 【CSDN常见问题解答】Javap 的使用
- JAVA大数类练手
- HDU 4598 Difference
- 在rubymine中启动应用。产生 Library not loaded: libmysqlclient.18.dylib (LoadError) 错误的解决办法
- qt 下scrollArea 显示图像的问题
- sax解析原理与案例
- 探讨:使用httpClient在客户端与服务器端传输对象参数的详解
- php实时显示当前时间
- PHPCMS缓存
- Mongo管理命令
- 我开博了