프로 그래 밍 사고 와 실천 Week 7 작업 A - TT 의 마법 고양이
8707 단어 알고리즘
제목 설명: TT 에는 마법 고양이 가 있다 는 것 은 잘 알려 져 있다.이날 TT 는 '고양이 와 쥐' 게임 에 전념 하고 있 었 지만 경기 가 시작 되 기도 전에 똑똑 한 마법 고양 이 는 TT 경기 의 최종 결 과 를 알려 주 었 다.TT 는 매우 의아해 했다. 그의 고양이 가 말 을 할 줄 아 는 것 은 물론 이 귀여운 꼬마 가 왜 이렇게 마력 이 있 는 지 의아해 했다.마법 고양 이 는 TT 에 게 사실 게임 승부 표를 가지 고 있 는데 그 위 에 N 개인 과 M 개의 승부 관계 가 있 고 모든 승부 관 계 는 A B 로 A 가 B 를 이 길 수 있 고 승부 관 계 는 전달 성 이 있다 고 말 했다.A 가 B 보다 낫 고 B 가 C 보다 낫 면 A 도 C 보다 낫다.TT 는 고양이 가 어떤 경 기 를 하 든 예측 할 수 있다 고 믿 지 않 기 때문에 얼마나 많은 선수 들 의 승 부 를 미리 알 수 없 는 지 알 고 싶 어 합 니 다. 도와 주 시 겠 습 니까?
Input: 첫 번 째 줄 은 데이터 그룹 수 를 드 립 니 다.각 그룹의 데이터 첫 줄 은 N 과 M (N, M < = 500) 을 드 립 니 다.다음 M 줄 은 줄 마다 A B 를 주 고 A 가 B 를 이 길 수 있다 는 뜻 이다.
Output: 각 조 의 데이터 에 대해 서 는 몇 경기 의 승 부 를 미리 알 수 없습니다.주의 (a, b) 와 (b, a) 등가, 즉 각 이원 조 는 한 번 만 계산 된다.
Sample Input: 3 3 3 1 2 1 3 2 3 3 2 1 2 2 3 4 2 1 2 3 4
Sample Output: 0 0 4
사고방식: 본 문 제 는 Floyd 알고리즘 을 사용 하여 승부 관계 의 전달 성 을 나타 낸다.먼저 N 차원 매트릭스 로 각자 의 승부 관 계 를 보존 하고 0 으로 초기 화해 승부 관계 가 불분명 하 다 는 뜻 을 밝 힌 뒤 플 로 이 드 알고리즘 처리 시 삼중 순환 을 해 승부 관계 의 전달 성 을 확보 해 야 한다.동시에 가지치기 작업 을 하고 이미 승부 관계 가 있 는 조별 만 처리 해 야 한다.수출 할 때 두 사람 간 의 승부 관 계 는 확실 하기 때문에 행렬 의 절반 만 을 고려한다 (대각선 자 체 는 포함 되 지 않 는 다).
요약: 본 문 제 는 기본적으로 알고리즘 을 사용 하 는 동시에 가 지 를 자 르 고 복잡 도 를 줄 여야 한다.
코드:
#include
#include
#include
using namespace std;
int path[510][510];
int main(){
//freopen("in.txt","r",stdin);
int T,N,M,A,B,cnt;
cin>>T;
while(T--){
cnt=0;
memset(path,0,sizeof(path));
cin>>N>>M;
for(int i=0;i<M;i++){
cin>>A>>B;
path[A][B]=1;
}
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
if(path[j][i]==1)
for(int k=1;k<=N;k++)
if(path[i][k]==1)
path[j][k]=1;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
if(i!=j&&path[i][j]==0&&path[j][i]==0)
cnt++;
cout<<cnt/2<<endl;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.