This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int N,*C,*H,*P;
vector <int> sol[100000];
bool visited[100000];
void connect(int a,int b)
{
sol[a].push_back(b);
sol[b].push_back(a);
}
void prijatelstva()
{
int i;
for (i=1; i<N; i++)
{
if(P[i]==0)
{
connect(H[i], i);
}
if(P[i]==1)
{
for(int j=sol[H[i]].size(); j>0; j--)
connect(sol[H[i]][j], i);
}
if(P[i]==2)
{
for(int j=sol[H[i]].size(); j>0; j--)
connect(sol[H[i]][j], i);
connect(H[i], i);
}
}
}
int dfs(int x, int value)
{
int i, rez=0;
if(x==N) //end
return value;
for (i=sol[x].size(); i--;)
{
if(visited[sol[x][i]])
break;
}
if(i<0)
{
visited[x]=1;
rez=dfs(x+1, value+C[x]);
}
visited[x]=0;
int y=dfs(x+1, value);
if(rez<y)
rez=y;
return rez;
}
int subtask1()
{
prijatelstva();
return dfs(0, 0);
}
int subtask2()
{
int zbir=0;
for (int i=0; i<N; i++)
zbir+=C[i];
return zbir;
}
int subtask3()
{
int maxx=-1;
for (int i=0; i<N; i++)
{
if(C[i]>maxx)
maxx=C[i];
}
return maxx;
}
int findSample(int n, int confidence[], int host[], int protocol[])
{
int i;
N=n;
C=confidence;
H=host;
P=protocol;
if (N<=10)
return subtask1();
for(i=2; i<N; i++)
if(protocol[i-1]!=protocol[i])
break;
if(i>=N)
{
if(protocol[1]==1)
{
return subtask2();
}
if(protocol[1]==2)
return subtask3();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |