HDU 2094:우승
2646 단어 HDU
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11500 Accepted Submission(s): 5334
Problem Description
한 무리의 사람들 이 탁구 경 기 를 하고 두 사람 이 서로 잡 고 찢 으 며 두 사람 사이 에 가장 많은 경 기 를 한다.
구기 시합 의 규칙 은 다음 과 같다.
만약 A 가 B 를 이기 고 B 가 C 를 또 이기 고 A 와 C 사이 에 경 기 를 한 적 이 없다 면 A 는 반드시 C 를 이 길 수 있다 고 인정한다.
A 가 B 를 이기 고 B 가 C 를 이기 고 C 가 A 를 이기 면 A,B,C 세 사람 모두 우승 이 불가능 하 다.
이 규칙 에 따 르 면 순환 대결 없 이 우승 을 확정 할 수 있 을 지도 모른다.당신 의 임 무 는 한 무리의 경기 선수 들 을 상대 로 몇 차례 의 찢 어 진 후에 이미 실제로 우승 을 했 는 지 확인 하 는 것 입 니 다.
Input
입력 은 일부 선수 군 을 포함 하고 모든 선수 들 은 하나의 정수 n(n<1000)으로 시작 하여 n 대 선수 의 경기 결 과 를 나타 낸다.경기 결 과 는 한 쌍 의 선수 이름(중간 칸)으로 전 자 는 후 자 를 이 겼 다.n 이 0 이면 입력 이 끝 났 음 을 표시 합 니 다.
Output
각 선수 군 에 대해 서 는 우승 을 판단 하면 한 줄 에'Yes'를 출력 하고,그렇지 않 으 면 한 줄 에'No'를 출력 한다.
Sample Input
3
Alice Bob
Smith John
Alice Smith
5
a c
c d
d e
b e
a d
0
Sample Output
Yes
No
AC-code:
#include<cstdio>
#include<cstring>
int main()
{
int n,i,j;
char str1[1000][20],str2[1000][20];
while(scanf("%d",&n),n)
{
for(i=0;i<n;i++)
{
scanf("%s%s",str1[i],str2[i]);
}
int k=0;
for(i=0;i<n;i++)//
for(j=0;j<n;j++)
{
if(!strcmp(str1[i],str2[j]))
{
str1[i][0]='0';
k++;
break;
}
}
int ans=0;
for(i=0;i<n;i++)//
for(j=i+1;j<n;j++)
{
if(str1[i][0]=='0')
break;
if(!strcmp(str1[i],str1[j]))
{
ans++;
break;
}
}
if(n-k-ans==1)//
printf("Yes
");
else
printf("No
");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU] 4089 활성화 확률 DPdp[i][j]를 모두 i개인의 대기열인 Tomato가 j위 서버가 마비될 확률로 역추를 사용하면 우리는 상태 이동 방정식을 얻을 수 있다. i == 1 : dp[1][1] = dp[1][1] * p1 + dp[1]...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.