hdu 3461 Code Lock

 1 #include<iostream>

 2 #include<cstdio>

 3 #include<cstdlib>

 4 #include<cstring>

 5 #include<string>

 6 #include<queue>

 7 #include<algorithm>

 8 #include<map>

 9 #include<iomanip>

10 #include<climits>

11 #include<string.h>

12 #include<numeric>

13 #include<cmath>

14 #include<stdlib.h>

15 #include<vector>

16 #include<stack>

17 #include<set>

18 #define FOR(x, b, e)  for(int x=b;x<=(e);x++)

19 #define REP(x, n)     for(int x=0;x<(n);x++)

20 #define MAXN 100010

21 #define maxn 1000010

22 #define Mod 1000007

23 #define N 1010

24 using namespace std;

25 typedef long long LL;

26 

27 int n, m;

28 int fa[10000010];

29 int cnt;

30 

31 int findset(int x)

32 {

33     return fa[x] = fa[x] == x? x:findset(fa[x]);

34 }

35 

36 void merge(int a, int b)

37 {

38     int x = findset(a);

39     int y = findset(b);

40     if (x != y) {

41         fa[x] = y;

42         cnt++;

43     }

44 }

45 

46 LL quick_pow(int n) 

47 {

48     LL tmp = 26,sum = 1;

49     while (n) {

50         if (n & 1) sum = (sum * tmp) % 1000000007; 

51         tmp = (tmp * tmp) % 1000000007;

52         n >>= 1;

53     }

54     return sum % 1000000007;

55 }

56 

57 int main()

58 {

59     int l, r;

60     while (cin >> n >> m) {    

61         cnt = 0;

62         FOR(i,0,n) fa[i] = i;

63         FOR(i,1,m) {

64             cin >> l >> r;

65             merge(l-1,r);

66         }

67         cout << quick_pow(n - cnt) << endl;

68     }

69     return 0;

70 }

 

你可能感兴趣的:(code)