沂水网站建设,牡丹江网站建设兼职,商务网站建设有哪几个步骤,网站一般用什么做的正题
题目链接:https://jzoj.net/senior/#main/show/3846 题目大意
长度nnn的直线#xff0c;mmm条线#xff0c;将它们分成两边#xff0c;使同一边不交叉#xff0c;求是否有方案。 解题思路
将会交叉的直线之间连接边#xff0c;然后判断是否是二分图即可。 codecod…正题
题目链接:https://jzoj.net/senior/#main/show/3846 题目大意
长度nnn的直线mmm条线将它们分成两边使同一边不交叉求是否有方案。 解题思路
将会交叉的直线之间连接边然后判断是否是二分图即可。 codecodecode
#includecstdio
#includecstring
#includealgorithm
using namespace std;
const int N1100;
struct node{int l,r;
}a[N];
struct edge_node{int to,next;
}e[N*N];
int T,n,m,fail,v[N],tot,ls[N];
bool cmp(node x,node y)
{return x.ry.r;}
void addl(int x,int y)
{e[tot].toy;e[tot].nextls[x];ls[x]tot;
}
void dfs(int x,int w)
{v[x]w;for(int ils[x];i;ie[i].next){int ye[i].to;if(fail) break;if(v[y]v[y]!(w^1)) {fail1;break;}if(v[y]) continue;dfs(y,w^1);}
}
int main()
{scanf(%d,T);while(T--){scanf(%d%d,n,m);for(int i1;im;i){scanf(%d%d,a[i].l,a[i].r);if(a[i].la[i].r) swap(a[i].l,a[i].r);}sort(a1,a1m,cmp);failtot0;memset(v,0,sizeof(v));memset(ls,0,sizeof(ls));for(int i1;im;i)for(int ji1;jm;j)if(a[i].la[j].la[j].la[i].ra[i].ra[j].r)addl(i,j),addl(j,i);for(int i1;im;i)if(!v[i])dfs(i,2);if(fail) printf(non\n);else printf(sane\n);}
}