讨论 / 时间伤不起啊
810815462 2016-09-21 06:04:22
点我顶贴 收藏 删除
没有简化 但时间太紧了

#include <iostream>

using namespace std;

int main(){

int n,m;

cin>>n>>m;

bool stops[n][n];

for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

stops[i][j]=false;

}

}

for(int i=0;i<m;i++){

int input[n+1];

int temp1;

cin>>temp1;

input[0]=temp1;

for(int j=1;j<=temp1;j++){

int temp2;

cin>>temp2;

input[j]=temp2;

}

int x=input[1];

int y=input[input[0]];

int size=y-x+1;

bool b[size];

for(int j=0;j<size;j++){

b[j]=false;

}

for(int j=1;j<=input[0];j++){

b[input[j]-x]=true;

}

for(int j=0;j<size;j++){

if(b[j]){

continue;

}else{

for(int k=0;k<size;k++){

if(j==k){

continue;

}else if(b[k]){

stops[j+x-1][k+x-1]=true;

}

}

}

}

}

int a[n],c[n],count=0;

int ap=0,cp=0;

bool flag=true;

while(flag){

flag=false;

for(int i=0;i<n;i++){

for(int j=0;j<cp;j++){

if(i==c[j]){

goto AAA;

}

}

for(int j=0;j<n;j++){

if(stops[j][i]){

goto AAA;

}

}

a[ap]=i;

ap++;

c[cp]=i;

cp++;

flag=true;

AAA:

;

}

while(ap>0){

ap--;

int temp=a[ap];

for(int i=0;i<n;i++){

stops[temp][i]=false;

}

}

count++;

}

cout<<(--count);

return 0;

}

查看更多回复
提交回复