题目链接:https://vjudge.net/problem/ZOJ-4116
题目大意:给定一个n个点,m条边的无向连通图,有k个人(分别属于两个阵营)轮流取走一条边,若轮到某一个人操作的时候使得图不连通了,那么它所在的阵营输了,输出赢的阵营的编号。
思路:连通图最少需要n-1条边,那么可取走的边数为m-n条,那么第m-n+1个人就输了,输出它的敌对阵营即可。(注意答案要模k)
。。。我服了,刚开始没看到给定的图一定是连通的,还写了个kruskal判连通(多此一举),然后输出的时候又忘了模k,一直wa,,我真是个铁憨憨
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<map>
using namespace std;
int main()
{
int k,t,n,m;
string s;
cin>>t;
map<char,int> mp;
mp['1']=2;mp['2']=1;
while(t--)
{
cin>>k>>s>>n>>m;
for(int i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
}
int x=(m-n+1)%k;
cout<<mp[s[x]]<<endl;
}
return 0;
}