# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
3699 | mjy0503 | Cactus? Not cactus? (kriii1_C) | C++98 | 180 ms | 24632 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
#include <set>
int n,top2=-1,stack2[200001],stack[200001],top=-1,save[200001],cnt[200001];
using namespace std;
vector<int> list[200001],list2[200001];
set< pair<int,int> > edge;
bool check[100001],flag,backedge;
void back(int k){
int i;
stack[++top]=k;
while(top!=-1){
k=stack[top];
check[k]=1;
for(;save[k]<list[k].size();save[k]++){
if(!check[list[k][save[k]]]){
list2[list[k][save[k]]].push_back(k);
edge.insert(make_pair(list[k][save[k]],k));
stack[++top]=list[k][save[k]];
break;
}
else if(edge.find(make_pair(k,list[k][save[k]]))==edge.end()){
edge.insert(make_pair(list[k][save[k]],k));
cnt[list[k][save[k]]]++;
list2[list[k][save[k]]].push_back(k);
}
}
if(save[k]==list[k].size()){
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |