题目链接
题目大意:
一个镇上有 n 个区 一个区里有一个土匪窝 最初的时候 没有区是相互连接的
然后要 建 n-1 条道路来连接所有的区 (两个区域可以直接相连也可以通过其它连接的区域相连)
但是 同属一个土匪窝的区不能直接相连
输出 可以构建的道路
解题思路:
直接在输入的时候 判断和第一个区 不在同一个土匪窝的是哪个区 标记为 K
如果输入完毕后 没有找到那个区 说明 所有区都是同一个土匪窝 输出 NO
否则就再遍历一遍 如果和第一个区不一个土匪窝 就在两个区之间修路
不然就在 K 和这个区之间修路
代码如下:
#include<iostream>
using namespace std;
const int maxn=1e4;
int a[maxn];
int main()
{
int t;
int n;
int i,j,k;
cin>>t;
while(t--)
{
cin>>n;
k=-1;
cin>>a[1];
for(i=2;i<=n;i++)
{
cin>>a[i];
if(a[i]!=a[1])
k=i;
}
if(k==-1)
{
cout<<"NO"<<endl;
continue;
}
else
{
cout<<"YES"<<endl;
for(i=2;i<=n;i++)
{
if(a[i]!=a[1])
{
cout<<"1 "<<i<<endl;
}
else
cout<<k<<" "<<i<<endl;
}
}
}
return 0;
}