D - Game on a Graph(ZOJ 4116)
Time Limit : 1 Second Memory Limit : 65536 KB
Source : 第十届山东省ACM省赛
Problem Link : ZOJ 4116
Author : Houge Date : 2019-5-20
题目大意:
给出一个含n个点,m条边的连通图,将k个人按照输入分成两组,按顺序取边,当取走一条边后图不再连通,该队就输了,要求输出赢的队的编号。
分析:
题目看上去很长,像是一个复杂的图论,但其实算作一个签到题也不过分。。。对于n个点,若要该图连通,则至少需要n-1条边。而题目所给出的图最初一定是连通的,那么我们可以说,当边数为n-1时,下一个拿边的队伍就是输掉比赛的队伍。
代码:
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main() 6 { 7 int t; 8 scanf("%d",&t); 9 while(t--) 10 { 11 int n,v,e,temp=0; 12 char order[100005]; 13 scanf("%d%s%d%d",&n,order,&v,&e); 14 if(e>=v-1) temp=(e-v+1)%n; //注意要对n取模 15 while(e--) 16 { 17 scanf("%*d%*d"); 18 } 19 //cout<<"Test temp : "<<temp<<endl; 20 if(order[temp]=='1') printf("2\n"); 21 else printf("1\n"); 22 } 23 return 0; 24 }