2017中國大學生程序設計競賽 - 女生專場(Graph Theory)
阿新 • • 發佈:2018-05-22
vector eas ali lan over ted mod pri without
Let the set of vertices be {1, 2, 3, ..., n
}. You have to consider every vertice from left to right (i.e. from vertice 2 to
n
). At vertice i
, you must make one of the following two decisions:
(1) Add edges between this vertex and all the previous vertices (i.e. from vertex 1 to i?1 ).
(2) Not add any edge between this vertex and any of the previous vertices.
In the mathematical discipline of graph theory, a matching in a graph is a set of edges without common vertices. A perfect matching is a matching that each vertice is covered by an edge in the set.
Now Little Q is interested in checking whether a ‘‘Cool Graph‘‘ has perfect matching. Please write a program to help him.
In each test case, there is an integer n(2≤n≤100000) in the first line, denoting the number of vertices of the graph.
The following line contains n?1 integers a2,a3,...,an(1≤ai≤2) , denoting the decision on each vertice.
Graph Theory
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1796 Accepted Submission(s):
750
Let the set of vertices be {1, 2, 3, ..., n
(1) Add edges between this vertex and all the previous vertices (i.e. from vertex 1 to i?1 ).
(2) Not add any edge between this vertex and any of the previous vertices.
In the mathematical discipline of graph theory, a matching in a graph is a set of edges without common vertices. A perfect matching is a matching that each vertice is covered by an edge in the set.
Now Little Q is interested in checking whether a ‘‘Cool Graph‘‘ has perfect matching. Please write a program to help him.
Input The first line of the input contains an integer T(1≤T≤50) , denoting the number of test cases.
In each test case, there is an integer n(2≤n≤100000) in the first line, denoting the number of vertices of the graph.
The following line contains n?1 integers a2,a3,...,an(1≤ai≤2) , denoting the decision on each vertice.
Output For each test case, output a string in the first line. If the graph has perfect matching, output ‘‘Yes‘‘, otherwise output ‘‘No‘‘.
Sample Input 3 2 1 2 2 4 1 1 2
Sample Output Yes No No
Source 2017中國大學生程序設計競賽 - 女生專場
Recommend jiangzijing2015 | We have carefully selected several similar problems for you: 6286 6285 6284 6283 6282 題意:給n個頂點,從第一個點開始操作,每個點有兩種操作:1、將當前結點和之前的所有結點都加一條邊 2、當前結點與之前的所有結點都不加邊。問是否能夠完美匹配?完美匹配是指所有的結點都有邊連接,並且這些邊中沒有公共的頂點。 每一個2後面必須至少有一個1,那麽倒著遍歷
#include <iostream> #include<cstring> #include<string> #include<cstdio> #include<algorithm> #include<cmath> #include<deque> #include<vector> #define ll long long #define inf 0x3f3f3f3f #define mod 1000000007; using namespace std; int a[100005]; int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); int s1=0; int s2=0; int x; bool f=1; for(int i=2;i<=n;i++) {//2只能靠後面的1把它連上邊 scanf("%d",&x); a[i]=x; } for(int i=n;i>=2;i--)//倒著遍歷,從後往前看的話,1的數量一定要比2多 { if(a[i]==1) s1++; else s2++; if(s2>s1) { f=0; break; } } if(n%2==1||!f||x!=1) printf("No\n");//奇數個點肯定不行 else printf("Yes\n"); } return 0; }
2017中國大學生程序設計競賽 - 女生專場(Graph Theory)