蒟蒻CE求助
查看原帖
蒟蒻CE求助
777809
IOI_AK_TLR楼主2023/7/25 19:08

蒟蒻只会链表,就用链表做的,代码:

#include <bits/stdc++.h>
using namespace std;
const int N(1e7+6);
struct Node{
	int data=INT_MAX;
	Node *next=NULL;
};
Node a[N];
int n,m,ii,jj,realij[N];
char x;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		Node *p=new Node;
		scanf("%d",&p->data);
		a[i].next=p;
		realij[i]=i;
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		cin>>x;
		if(x=='M')
		{
			cout<<""; 
			scanf("%d%d",&ii,&jj);
			while(realij[ii]!=ii)
				ii=realij[ii];
			while(realij[jj]!=jj)
				jj=realij[jj];
			if(ii==jj)
				continue;
			Node *m=&a[ii];
			while(m->next!=NULL)
				m=m->next;
			m->next=a[jj].next;
			realij[jj]=ii;
		}
		else
		{
			int *minx=&a[i].data;
			scanf("%d",&ii);
			while(realij[ii]!=ii)
				ii=realij[ii];
			Node *q=&a[ii];
			while(q->next!=NULL)
			{
				q=q->next;
				if((q->data)<*minx)
					minx=&q->data;
			}
			if(*minx<INT_MAX)
				printf("%d\n",*minx);
			else
				printf("%d\n",0);
			*minx=INT_MAX;
		}
	}
	//debug + delete
//	for(int i=1;i<=n;i++)
//	{
//		cout<<endl;
//		Node *pp=&a[i];
//		while(pp->next!=NULL)
//		{
//			pp=pp->next;
//			cout<<pp->data<<" ";
//		}
//	}
	
	for(int i=1;i<=n;i++)
	{
		Node *r1=a[i].next;
		Node *r2;
		while(r1->next!=NULL)
		{
			r2=r1->next;
			delete r1;
			r1=r2;
		}
	}
	return 0;
}

2023/7/25 19:08
加载中...