比赛 |
“Asm.Def战记之夏威夷”杯 |
评测结果 |
WWWWAWWWWW |
题目名称 |
Asm.Def的报告 |
最终得分 |
10 |
用户昵称 |
fengchenxue |
运行时间 |
0.347 s |
代码语言 |
C++ |
内存使用 |
4.13 MiB |
提交时间 |
2015-11-06 10:44:14 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
#include<cstring>
#include<string>
#include<cstdlib>
#include<set>
#include<map>
using namespace std;
struct str{
vector<int>tr;
vector<int>fa;
int a1,a2;
int ding;
bool ok;
}f[100010];
int n,m;
void fun(int x,int y){
int a;int b;
f[x].ok=1;
if(f[x].a1<0) a=-f[x].a1;
else a=f[x].a1;
if(f[x].a2<0) b=-f[x].a2;
else b=f[x].a2;
if(a==y&&!f[b].ding)
{
if(f[x].a2>0){
f[b].ding=1;
fun(b,x);
}
else{
f[b].ding=-1;
fun(b,x);
}
}
if(b==y&&!f[a].ding){
if(f[x].a1>0){
f[a].ding=1;
fun(a,x);
}
else{
f[a].ding=-1;
fun(a,x);
}
}
}
int main(){
freopen("asm_report.in","r",stdin);
freopen("asm_report.out","w",stdout);
cin>>n>>m;
int u1,u2;
for(int i=1;i<=m;i++){
cin>>u1>>u2;
f[i].a1=u1;
f[i].a2=u2;
if(u1==u2){
if(u1>0) f[u1].ding=1;
else f[-u1].ding=-1;
f[i].ok=1;
continue;
}
int a,b;
if(u1>0) a=u1;
else a=-u1;
if(u2>0) b=u2;
else b=-u2;
if(f[a].ding||f[b].ding)
{
if(f[a].ding)
{
if(f[a].ding==1)
{
if(u1>0){
f[i].ok=1;
continue;
}
else{
if(u2>0){
f[u2].ding=1;
f[i].ok=1;
continue;
}
else{
f[-u2].ding=-1;
f[i].ok=1;
continue;
}
}
}
else
{
if(u1<0){
f[i].ok=1;
continue;
}
else
{
if(u2>0){
f[u2].ding=1;
f[i].ok=1;
continue;
}
else{
f[-u2].ding=-1;
f[i].ok=1;
continue;
}
}
}
}
if(f[b].ding)
{
if(f[b].ding==1)
{
if(u2>0){
f[i].ok=1;
continue;
}
else{
if(u1>0){
f[u1].ding=1;
f[i].ok=1;
continue;
}
else{
f[-u1].ding=-1;
f[i].ok=1;
continue;
}
}
}
else
{
if(u2<0){
f[i].ok=1;
continue;
}
else
{
if(u1>0){
f[u1].ding=1;
f[i].ok=1;
continue;
}
else{
f[-u1].ding=-1;
f[i].ok=1;
continue;
}
}
}
}
}
if(u1>0)
{
f[a].tr.push_back(i);
}
else
{
f[a].fa.push_back(i);
}
if(u2>0)
{
f[b].tr.push_back(i);
}
else{
f[b].fa.push_back(i);
}
}
for(int i=1;i<=m;i++)
{
if(f[i].ding)
{
while(f[i].tr.empty()==0)
{
int a=f[i].tr.back();
f[i].tr.pop_back();
fun(a,i);
}
while(f[i].fa.empty()==0)
{
int a=f[i].fa.back();
f[i].fa.pop_back();
fun(a,i);
}
}
}
for(int i=1;i<=n;i++)
{
/* if(f[i].ok)
{
int a;int b;
//f[x].ok=1;
if(f[x].a1<0) a=-f[x].a1;
else a=f[x].a1;
if(f[x].a2<0) b=-f[x].a2;
else b=f[x].a2;
if(!f[a].ding)
{
if(a1>0){
fa[]
}
}
}
}
*/
if(f[i].ding==1) cout<<"1"<<" ";
else cout<<"0"<<" ";
}
}