后三个测试点TLE
查看原帖
后三个测试点TLE
1188358
Yosuga_sora楼主2024/3/7 22:32
#include <stdio.h>
#include <stdlib.h>
int n,i,p,m,x,a[100010]={0};
typedef struct LNode{
	struct LNode *pre;
	int data;
	struct LNode *next;
}LNode,*LinkList;
void InitialLNode(LinkList L){
	L->pre=NULL;
	L->data=1;
	L->next=NULL;
}
struct LNode* Insert0(LinkList L,int data,int i){
	LinkList index=L;
	while(index->data!=i){
		index=index->next;
	}
	LinkList NewLNode;
	NewLNode=(LNode*)malloc(sizeof(LNode));
	NewLNode->pre=index->pre;
	if(index->pre!=NULL){
		index->pre->next=NewLNode;
	}
	NewLNode->next=index;
	NewLNode->data=data;
	index->pre=NewLNode;
	if(!NewLNode->pre){
		return NewLNode;
	}
	return L;
}
struct LNode* Insert1(LinkList L,int data,int i){
	LinkList index=L;
	while(index->data!=i){
		index=index->next;
	}	
	LinkList NewLNode;
	NewLNode=(LNode*)malloc(sizeof(LNode));	
	NewLNode->data=data;
	NewLNode->pre=index;
	NewLNode->next=index->next;
	if(index->next!=NULL)NewLNode->next->pre=NewLNode;
	index->next=NewLNode;
	
	return L;
};
void PrintLinkList(LinkList L){
	LinkList index=L;
	if(a[index->data]==0){
		printf("%d ",index->data);
	}
	while(index->next!=NULL){
		index=index->next;
		if(a[index->data]==0){
			printf("%d ",index->data);
		}
	}
}
int main(){
	LinkList L;
	L=(LNode*)malloc(sizeof(LNode));
	InitialLNode(L);
	scanf("%d",&n);
	for(int j=2;j<=n;j++){
		scanf("%d%d",&i,&p);
		if(p==0){
			L=Insert0(L,j,i);
		}
		else{
			Insert1(L,j,i);
		}
	}
	scanf("%d",&m);
	while(m--){
		scanf("%d",&x);
		a[x]=1;
	}
	PrintLinkList(L);
	return 0;
}
2024/3/7 22:32
加载中...