QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#129048 | #997. 2-SAT 问题 | KafuuChinocpp# | WA | 39ms | 61060kb | C++14 | 1.5kb | 2023-07-21 20:05:18 | 2023-07-21 20:05:19 |
Judging History
answer
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int max1 = 2e6;
int n, m;
vector <int> edge[max1 + 5];
int dfn[max1 + 5], low[max1 + 5], dfs_clock;
int s[max1 + 5], top;
bool in[max1 + 5];
int belong[max1 + 5], cnt;
void Tarjan ( int now )
{
dfn[now] = low[now] = ++dfs_clock;
s[++top] = now; in[now] = true;
for ( auto v : edge[now] )
{
if ( !dfn[v] )
{
Tarjan(v);
low[now] = min(low[now], low[v]);
}
else if ( in[v] )
low[now] = min(low[now], dfn[v]);
}
if ( dfn[now] == low[now] )
{
int x; ++cnt;
do
{
x = s[top--];
in[x] = false;
belong[x] = cnt;
} while ( x != now );
}
return;
}
int main ()
{
scanf("%d%d", &n, &m);
for ( int i = 1, u, v, a, b; i <= m; i ++ )
{
scanf("%d%d%d%d", &u, &a, &v, &b);
edge[u + n * (a ^ 1)].push_back(v + n * b);
edge[v + n * (b ^ 1)].push_back(u + n * a);
}
for ( int i = 1; i <= n + n; i ++ )
if ( !dfn[i] )
Tarjan(i);
// for ( int i = 1; i <= n + n; i ++ )
// printf("%d ", belong[i]);
// printf("\n");
for ( int i = 1; i <= n; i ++ )
if ( belong[i] == belong[n + i] )
return puts("IMPOSSIBLE"), 0;
puts("POSSIBLE");
for ( int i = 1; i <= n; i ++ )
printf("%d ", belong[i] > belong[i + n]);
printf("\n");
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 39ms
memory: 61060kb
input:
86354 86418 14615 0 14903 1 13605 0 4458 0 15604 0 77112 0 52311 1 64996 0 22711 1 74245 1 39042 1 57372 1 2994 1 84183 1 80574 0 58791 1 27780 1 9336 1 61809 0 7216 0 71113 0 42287 1 20073 0 72448 0 73840 0 77048 0 28955 0 4165 0 16322 1 14075 1 43512 0 58600 1 45219 0 53858 0 14919 0 22576 0 16594...
output:
POSSIBLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
wrong answer You didn't find a solution but jury did.