Submission #1157586


Source Code Expand

//start of jonathanirvings' template v3.0.3 (BETA)

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
typedef pair<string,string> pss;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<LL> vl;
typedef vector<vl> vvl;

double EPS = 1e-9;
int INF = 1000000005;
long long INFF = 1000000000000000005LL;
double PI = acos(-1);
int dirx[8] = {-1,0,0,1,-1,-1,1,1};
int diry[8] = {0,1,-1,0,-1,1,-1,1};

#ifdef TESTING
  #define DEBUG fprintf(stderr,"====TESTING====\n")
  #define VALUE(x) cerr << "The value of " << #x << " is " << x << endl
  #define debug(...) fprintf(stderr, __VA_ARGS__)
#else
  #define DEBUG 
  #define VALUE(x)
  #define debug(...)
#endif

#define FOR(a,b,c) for (int (a)=(b);(a)<(c);++(a))
#define FORN(a,b,c) for (int (a)=(b);(a)<=(c);++(a))
#define FORD(a,b,c) for (int (a)=(b);(a)>=(c);--(a))
#define FORSQ(a,b,c) for (int (a)=(b);(a)*(a)<=(c);++(a))
#define FORC(a,b,c) for (char (a)=(b);(a)<=(c);++(a))
#define FOREACH(a,b) for (auto &(a) : (b))
#define REP(i,n) FOR(i,0,n)
#define REPN(i,n) FORN(i,1,n)
#define MAX(a,b) a = max(a,b)
#define MIN(a,b) a = min(a,b)
#define SQR(x) ((LL)(x) * (x))
#define RESET(a,b) memset(a,b,sizeof(a))
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ALL(v) v.begin(),v.end()
#define ALLA(arr,sz) arr,arr+sz
#define SIZE(v) (int)v.size()
#define SORT(v) sort(ALL(v))
#define REVERSE(v) reverse(ALL(v))
#define SORTA(arr,sz) sort(ALLA(arr,sz))
#define REVERSEA(arr,sz) reverse(ALLA(arr,sz))
#define PERMUTE next_permutation
#define TC(t) while(t--)

inline string IntToString(LL a){
  char x[100];
  sprintf(x,"%lld",a); string s = x;
  return s;
}

inline LL StringToInt(string a){
  char x[100]; LL res;
  strcpy(x,a.c_str()); sscanf(x,"%lld",&res);
  return res;
}

inline string GetString(void){
  char x[1000005];
  scanf("%s",x); string s = x;
  return s;
}

inline string uppercase(string s){
  int n = SIZE(s); 
  REP(i,n) if (s[i] >= 'a' && s[i] <= 'z') s[i] = s[i] - 'a' + 'A';
  return s;
}

inline string lowercase(string s){
  int n = SIZE(s); 
  REP(i,n) if (s[i] >= 'A' && s[i] <= 'Z') s[i] = s[i] - 'A' + 'a';
  return s;
}

inline void OPEN (string s) {
  #ifndef TESTING
  freopen ((s + ".in").c_str (), "r", stdin);
  freopen ((s + ".out").c_str (), "w", stdout);
  #endif
}

//end of jonathanirvings' template v3.0.3 (BETA)

int n,m;
int a,b;
vi adj[100005];
bool done[100005];
bool bip;
int nodes;
int isol = 0;

void dfs(int now,int pt)
{
  ++nodes;
  done[now] = 1;
  REP(i,SIZE(adj[now]))
  {
    if (adj[now][i] != pt)
    {
      if (done[adj[now][i]]) bip = 1;
      else dfs(adj[now][i],now);
    }
  }
}

int main()
{
  scanf("%d %d",&n,&m);
  REP(i,n) adj[i].clear();
  TC(m)
  {
    scanf("%d %d",&a,&b);
    --a; --b;
    adj[a].pb(b);
    adj[b].pb(a);
  }
  LL risan = 0;
  int now = 0;
  int conn = 0;
  int iya = 0;
  int enggak = 0;
  REP(i,n) if (!done[i])
  {
    nodes = 0;
    bip = 0;
    dfs(i,-1);
    if (nodes == 1) ++isol;
    else
    {
      if (!bip) enggak++;
      else iya++;
      ++conn;
      now += nodes;
    }
  }
  REP(i,enggak)
  {
    risan += 2 * conn;
    --conn;
  }
  REP(i,iya)
  {
    risan += conn;
    --conn;
  }
  // risan += (LL)enggak * 2 * conn + (LL)iya * conn;
  // VALUE(enggak);
  // VALUE(iya);
  // VALUE(conn);
  // VALUE(isol);
  // VALUE(risan);
  REP(i,isol)
  {
    risan += 2 * now + 1;
    ++now;
  }
  printf("%lld\n",risan);
  return 0;
}








Submission Info

Submission Time
Task C - Squared Graph
User jonathanirvings
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3716 Byte
Status WA
Exec Time 90 ms
Memory 10624 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:122:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d",&n,&m);
                       ^
./Main.cpp:126:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&a,&b);
                         ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 800
Status
AC × 2
AC × 10
WA × 22
Set Name Test Cases
Sample sample1.txt, sample2.txt
All sample1.txt, sample2.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt
Case Name Status Exec Time Memory
in1.txt WA 2 ms 2560 KB
in10.txt AC 3 ms 2688 KB
in11.txt WA 2 ms 2560 KB
in12.txt WA 22 ms 5760 KB
in13.txt WA 22 ms 5760 KB
in14.txt WA 41 ms 5760 KB
in15.txt WA 6 ms 3072 KB
in16.txt WA 29 ms 4224 KB
in17.txt WA 23 ms 5504 KB
in18.txt WA 57 ms 7168 KB
in19.txt WA 45 ms 7168 KB
in2.txt WA 2 ms 2560 KB
in20.txt WA 44 ms 7168 KB
in21.txt WA 87 ms 10624 KB
in22.txt AC 50 ms 6016 KB
in23.txt AC 36 ms 4864 KB
in24.txt WA 3 ms 2688 KB
in25.txt WA 90 ms 10624 KB
in26.txt AC 2 ms 2560 KB
in27.txt WA 3 ms 2688 KB
in28.txt WA 90 ms 10624 KB
in3.txt AC 2 ms 2560 KB
in4.txt AC 2 ms 2560 KB
in5.txt WA 54 ms 5376 KB
in6.txt WA 5 ms 2944 KB
in7.txt WA 5 ms 2816 KB
in8.txt WA 9 ms 3584 KB
in9.txt WA 25 ms 4864 KB
sample1.txt AC 2 ms 2560 KB
sample2.txt AC 2 ms 2560 KB