选课大作战

来源:互联网 发布:成为算法工程师 编辑:程序博客网 时间:2024/06/10 04:56

选课大作战

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

眼看着大一新生就要来了,原大一的成了学叔学婶。

   C又在为了新学期的选课问题忙了起来。。。。。渐渐地他发现了一个问题:当他想学“计算机网络”这门课时,选课系统告诉他必须学过“离散数学”才能学这门科目。

所以我们就称“离散数学”是“计算机网络”的必学科目。现在已知选课系统收集了很多科目的顺序关系,但是,这个选课系统出了一些故障,一些信息可能不准确,所以请你来帮小X是科目Y也是科目"科目Y的必学科目,科目Z的必学科目,科目X的必学科目<font new="" roman\"="" face="\"Times">"这类也是错误的。

输入

 行:1,表示数据的组数T(1 <= T <= 5)

T组数据按照以下格式:2个整数,N表示课程总数量,课程编号为M表示顺序关系的数量。
2..M+1行:每行A,B。表示课程B的前置课程。

输出

 行:每行1,若该组信息有误,输出"Wrong"<font 12pt;\"="" face="\"宋体\"">。

示例输入

22 21 22 13 21 21 3

示例输出

WrongCorrect

提示

 

来源

 

示例程序

 
#include <iostream>      #include <algorithm>      #include <cstdio>      #include <cstring>      #include <cstdlib>      using namespace std;        int arr[100100],flag;      int Find(int r)      {          return r==arr[r]? r:arr[r]=Find(arr[r]);      }      void Union(int x,int y)      {          int fx=Find(x);          int fy=Find(y);          if(fx!=fy)          {              arr[fx]=fy;          }          else              flag=1;      }      int main()      {          int t,n,m;          int i,x,y;          scanf("%d",&t);          while(t--)          {              flag=0;              scanf("%d%d",&n,&m);              for (i=1;i<=n;i++)              {                  arr[i]=i;              }              for (i=0;i<m;i++)              {                  scanf("%d%d",&x,&y);                  Union(x,y);              }              if(flag==0)                  printf("Correct\n");              else                  printf("Wrong\n");          }          return 0;      }   

0 0
原创粉丝点击