• 【最短路】Vijos P1022Victoria的舞会2


    题目链接:

      https://vijos.org/p/1022

    题目大意:

      给一张N个点的有向图,求有几块强连通分量。(N<=200)

    题目思路:

      【动态规划】

      n比较小,可以用floyd暴力把每个点能到的都标记上。最后统计的时候把一块里所有的一起标记了,ans+1。

     1 //
     2 //by coolxxx
     3 //#include<bits/stdc++.h>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<string>
     7 #include<iomanip>
     8 #include<map>
     9 #include<memory.h>
    10 #include<time.h>
    11 #include<stdio.h>
    12 #include<stdlib.h>
    13 #include<string.h>
    14 //#include<stdbool.h>
    15 #include<math.h>
    16 #define min(a,b) ((a)<(b)?(a):(b))
    17 #define max(a,b) ((a)>(b)?(a):(b))
    18 #define abs(a) ((a)>0?(a):(-(a)))
    19 #define lowbit(a) (a&(-a))
    20 #define sqr(a) ((a)*(a))
    21 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
    22 #define mem(a,b) memset(a,b,sizeof(a))
    23 #define eps (1e-8)
    24 #define J 10
    25 #define MAX 0x7f7f7f7f
    26 #define PI 3.14159265358979323
    27 #define N 224
    28 using namespace std;
    29 typedef long long LL;
    30 int cas,cass;
    31 int n,m,lll,ans;
    32 bool a[N][N],mark[N];
    33 int main()
    34 {
    35     #ifndef ONLINE_JUDGE
    36 //    freopen("1.txt","r",stdin);
    37 //    freopen("2.txt","w",stdout);
    38     #endif
    39     int i,j,k;
    40 //    for(scanf("%d",&cas);cas;cas--)
    41 //    for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
    42     while(~scanf("%d",&n))
    43 //    while(~scanf("%d",&n))
    44     {
    45         for(i=1;i<=n;i++)
    46             while(scanf("%d",&j) && j)a[i][j]=1;
    47         for(k=1;k<=n;k++)
    48         {
    49             for(i=1;i<=n;i++)
    50             {
    51                 for(j=1;j<=n;j++)
    52                 {
    53                     a[i][j]|=(a[i][k]&a[k][j]);
    54                 }
    55             }
    56         }
    57         for(i=1;i<=n;i++)
    58             if(!mark[i])
    59             {
    60                 mark[i]=1;ans++;
    61                 for(j=1;j<=n;j++)if(a[i][j])mark[j]=1;
    62             }
    63         printf("%d
    ",ans);
    64     }
    65     return 0;
    66 }
    67 /*
    68 //
    69 
    70 //
    71 */
    View Code
  • 相关阅读:
    将node.js代码放到阿里云上,并启动提供外部接口供其访问
    Linux内核深度解析之内核互斥技术——读写信号量
    man 1 2 3 4...
    Android Sepolicy 相关工具
    selinux misc
    ext4 mount options
    tune2fs cmd(ext fs)
    /dev/tty node
    kernel misc
    fork & vfork
  • 原文地址:https://www.cnblogs.com/Coolxxx/p/5779002.html
Copyright © 2020-2023  润新知